Batalkan perancah di Rails

493

Apakah ada cara untuk 'membatalkan' efek perintah perancah di Rails?

Daniel
sumber
4
rails destroy scaffold xxx
Robin Garg
1
Di Rails 5: Hasilkan perancah dengan: $ rails menghasilkan scaffold <name>. Jika Anda memigrasikan file Anda, lakukan rollback: $ rake db: rollback . Hancurkan atau batalkan scaffold dengan: $ rails menghancurkan scaffold <name>. Anda dapat membaca lebih lanjut tentang ini di
Nesha Zoric

Jawaban:

777

Pertama , jika Anda sudah menjalankan migrasi yang dihasilkan oleh scaffoldperintah, Anda harus melakukan rollback terlebih dahulu.

rake db:rollback

Anda dapat membuat perancah menggunakan:

rails generate scaffold MyFoo 

(atau serupa), dan Anda dapat menghancurkan / membatalkannya menggunakan

rails destroy scaffold MyFoo

Itu akan menghapus semua file yang dibuat oleh generate, tetapi tidak ada perubahan tambahan yang mungkin Anda buat secara manual.

Rishav Rastogi
sumber
11
jangan lupa rake db:rollbacksebelum Anda menghancurkan perancah Anda. Ini akan menghancurkan / menjatuhkan tabel jika tidak ada migrasi lain kecuali migrasi perancah sebelumnya.
Yakob Ubaidi
3
Dalam beberapa kasus masih ada file sisa yang tidak dihapus dari perancah. Periksa kontrol versi Anda, mis git statusdan / atau git diff, untuk melihat apakah perintah pemusnahan melewatkan sesuatu.
aaron-coding
1
Jika Anda menjalankan rake db: melakukan migrasi melakukan beberapa migrasi lain setelah itu maka masuk akal untuk membuat migrasi untuk menghancurkan tabel sebelum "menghancurkan" perancah. jadi lakukan sesuatu seperti rel g DropMyFoos migrasi dan kemudian buka file migrasi dan tambahkan kode untuk menjatuhkan tabel. Jalankan migrasi ini dan kemudian jalankan perancah perusak.
Vikram Sharma
Perlu diingat juga bahwa itu akan menghapus folder tampilan untuk my_foo, walaupun Anda memiliki file tambahan di sana.
Andrew K
167

Rishav Rastogi benar, dan dengan rel 3.0 atau lebih tinggi:

rel menghasilkan perancah ...
rel menghancurkan perancah ...
Misha Rabinovich
sumber
8
@femi Meja dibuat dengan menyapu. Cara terbaik untuk menghapusnya adalah berjalan rake db:rollbacksebelum rails destroy scaffoldatau jika itu bukan yang terakhir Anda rake, db:migrate:down VERSION=20080906120000Anda dapat menemukan nomor sebelum namanya di db / migrate
Travis Pessetto
40

Anda dapat membatalkan apa pun yang Anda lakukan

rails generate xxx

Oleh

rails destroy xxx

Misalnya ini berlaku generator untuk migrasi, perancah, model ... dll

terima kasih
sumber
13

Jika Anda hanya ingin melihat file yang akan dibuat oleh generator, Anda dapat melewatkan opsi generator --pretend atau -p.

Sudhanshu Arya
sumber
10

Cara terbaik adalah:

destroy rake db:  rake db:rollback

Untuk perancah:

rails destroy scaffold Name_of_script
pengguna917158
sumber
8
rails d scaffold <scaffoldname>

Juga, pastikan Anda membatalkan migrasi yang Anda lakukan dengan rollback atau ke versi tertentu.

RageCore
sumber
8

untuk pertama kalinya, Anda dapat memeriksa migrasi database Anda jika Anda telah menghasilkan perancah. Anda harus menghancurkan mereka untuk membersihkan basis data Anda

rake db:rollback

kemudian

rails d scaffold
dedennufan
sumber
4

Untuk menghasilkan perancah:

rails generate scaffold xyz

Untuk mengembalikan perancah:

rails destroy scaffold xyz
uma
sumber
4

Rails menghancurkan nama

rake db:rollback
starbuck
sumber
1
kembalikan pertama (jika Anda bermigrasi), maka hancurkan perancah
gavit
3

Untuk menghasilkan perancah di rel -

rails generate scaffold MODEL_GOES_HERE

Untuk membatalkan perancah di rel -

rails destroy scaffold MODEL_GOES_HERE
Amit Suroliya
sumber
2
Juga pintasan rails gdan rails d.
steve klein
2

Anda perlu mengembalikan migrasi juga setelah menghancurkan perancah juga

rails destroy scaffold 'scaffoldname'
rake db:rollback
Bhargav Mehta
sumber
2

Jadi, Proses yang harus Anda ikuti untuk membatalkan perancah di rel 4. Jalankan Perintah seperti di bawah ini:

  1. rails d scaffold FooBar
  2. rake db:rollbackjika you_had_run_ rake db:migratesetelah membuat perancah di atas?

Itu dia!

Bersulang!

Manish Shrivastava
sumber
2

Rekomendasikan rollback Pertama, ketik Terminal Anda.

rake db:rollback

Tambahkan perancah perusak ('d' singkatan 'perusak')

rails d scaffold name_of_scaffold

Nikmati kode Anda.

Chutipong Roobklom
sumber
1

Gunakan ini

rails d scaffold MODEL_NAME

rake db:rollback
vipin
sumber
1

Pertama, Anda harus melakukan rake db: rollback untuk menghancurkan tabel
jika Anda sudah menjalankan rake db: bermigrasi dan kemudian Anda dapat menjalankan

rails d Model scaffold

Shoaib Malik
sumber
1

Anda perlu mengembalikan migrasi terlebih dahulu dengan melakukan rake db: rollback jika ada Dan kemudian hancurkan perancahnya

rails d scaffold foo
Manish
sumber
1

Ya, scaffolditu sendiri dan semua hal yang menggabungkannya.

The destroyperintah adalah kebalikan dari generatedan akan membatalkan satu. Cukup berikan nama dengan cara yang sama generatedan akan dihapus dari proyek Anda:

rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
JackHasaKeyboard
sumber
1

Untuk menghasilkan perancah:

rails generate scaffold abc

Untuk mengembalikan perancah ini:

rails destroy scaffold abc

Jika Anda telah menjalankan migrasi untuk itu, kembalikan saja

rake db:rollback STEP=1
nitanshu verma
sumber
1

penyedia solusi lain berdasarkan git

memulai proyek baru

rails new project_name
cd project_name

inisialisasi git

git init
git commit -m "initial commit"

buat perancah

rails g scaffold MyScaffold
rake db:migrate

kembalikan perancah

rake db:rollback
git reset --hard
git clean -f -d
Ray Lee
sumber
1

rails [option] scaffold scaffold_name

Pilihan

g    generate
d    destroy

Jika kamu melakukan

rails g  scaffold myFoo

Kemudian balikkan kembali menggunakan

rails d scaffold MyFoo
Krishnar
sumber
0

Saat kami membuat perancah, file berikut akan dibuat:

Perintah: rails generate scaffold Game

File yang dibuat:

>       invoke  active_record
>       create    db/migrate/20160905064128_create_games.rb
>       create    app/models/game.rb
>       invoke    test_unit
>       create      test/models/game_test.rb
>       create      test/fixtures/games.yml
>       invoke  resource_route
>        route    resources :games
>       invoke  inherited_resources_controller
>       create    app/controllers/games_controller.rb
>       invoke    erb
>       create      app/views/games
>       create      app/views/games/index.html.erb
>       create      app/views/games/edit.html.erb
>       create      app/views/games/show.html.erb
>       create      app/views/games/new.html.erb
>       create      app/views/games/_form.html.erb
>       invoke    test_unit
>       create      test/controllers/games_controller_test.rb
>       invoke    helper
>       create      app/helpers/games_helper.rb
>       invoke      test_unit
>       create        test/helpers/games_helper_test.rb
>       invoke    jbuilder
>       create      app/views/games/index.json.jbuilder
>       create      app/views/games/show.json.jbuilder
>       invoke  assets
>       invoke    coffee
>       create      app/assets/javascripts/games.js.coffee
>       invoke    scss
>       create      app/assets/stylesheets/games.css.scss
>       invoke  scss
>       create    app/assets/stylesheets/scaffolds.css.scss

Jika kami telah menjalankan migrasi setelah ini, maka kami harus mengembalikan migrasi terlebih dahulu karena penghapusan scaffold juga akan menghapus file migrasi dan kami tidak akan dapat mengembalikan migrasi itu.

Jika kami telah menjalankan migrasi:

rake db:rollback

dan setelah ini kita dapat menghapus scaffold dengan aman oleh commad ini.

rails d scaffold Game

Perintah ini akan menghapus semua file yang dibuat oleh perancah di proyek Anda.

BIlal Khan
sumber
0

Setiap kali Anda berlari rails g, Anda dapat membalikkannya dengan menjalankan rails d(menghancurkan) untuk menghapus apa yang telah Anda hasilkan. Jika Anda sudah menjalankan rake db:migrate, Anda harus menjalankan rake db:rollbacksebelum menghancurkan :)

Maddie
sumber
0

Kasus 1: Jika Anda hanya menjalankan perintah ini untuk menghasilkan perancah -

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

Ex - rails generate scaffold User name:string address:text

tetapi sampai sekarang Anda tidak menjalankan perintah apa pun untuk migrasi seperti

rake db:migrate

maka Anda harus menjalankan hanya perintah ini seperti -

rails destroy scaffold User name:string address:text

Kasus 2: Jika Anda sudah menjalankan (Scaffold dan Migration) dengan perintah di bawah ini seperti -

rails generate scaffold User name:string address:text

rake db:migrate 

Maka Anda harus menjalankan perintah migrasi rollback pertama kemudian hancurkan scaffold seperti di bawah ini -

rake db:rollback

rails destroy scaffold User name:string address:text

Jadi Dengan cara ini, kita bisa membatalkan perancah. Kita juga bisa menggunakan d untuk menghancurkan dan g untuk menghasilkan sebagai jalan pintas.

Manoj Kumar
sumber
0
rails g scaffold MyFoo 

untuk menghasilkan dan

rails d scaffold MyFoo

untuk menghapus

Ayaz Ahmad Tarar
sumber
Dan tidak perlu menyebutkan atribut, apakah itu benar? Terima kasih
Shane G