Cara membalikkan 'rails generate'


471

Saya ingin menghapus semua file yang dibuatnya dan mengembalikan semua perubahan yang dibuat, tetapi tidak harus ke database, tetapi lebih ke file konfigurasi.

Saya ingin secara otomatis menghapus semua pemetaan sumber daya untuk model / pengontrol yang dihapus dalam file routes.rb dan di mana pun yang mungkin telah dilakukan perubahan?

Jawaban:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2 menambahkan dpintasan baru ke perintah, jadi sekarang Anda dapat menulis:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
Btw, bagaimana cara menggunakan perintah ini untuk menghapus perancah? Model dan pengontrol berfungsi dengan baik ... tapi bagaimana cara membalikkan scaffold?
marcamillion

6
Ok, saya sudah menemukan jawabannya. Mungkin saya salah mengetik sesuatu. Saya hanya berlari rails destroy scaffold lalalaldan itu berhasil.
marcamillion

38
@marcamillion Pasti ekstra 'L'.
varatis

1
Bagaimana dengan menghapus file yang terkait dengan instalasi permata sepertirails generate <gemname>:install
doug

2
@ sial, saya pikir itu tidak mungkin. Taruhan terbaik Anda adalah dengan hanya menjalankan kembali generator dengan -fbendera untuk memaksanya membuat ulang / mengedit kembali file ... Kemudian Anda dapat melihat file mana yang dibuat / diubah, dan melanjutkan menghapus secara manual.
Fábio Batista

49

Layak disebutkan -pbendera di sini ("p" untuk berpura - pura ).

Jika Anda menambahkan ini ke perintah, ia hanya akan menjalankan "tes" dan menunjukkan kepada Anda file apa yang akan dihapus tanpa benar-benar menghapusnya.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

Jika Anda senang dengan itu, jalankan perintah lagi tanpa -pbendera.


Saya pikir ini adalah jawaban terbaik
Emil Reña Enriquez

24

rails destroy controller Controller_namesedang mengembalikan banyak kesalahan. Untuk dapat menghancurkan pengontrol saya harus menghapus rute terkait di routes.rb. PS Saya menggunakan rel 3.1


Tolong jangan meringkas tindakan Anda kecuali Anda bermaksud jawaban ini menjadi jawaban yang benar yang dipilih.
the Tin Man

11

Ini adalah prototipe untuk menghasilkan atau menghancurkan pengontrol atau model di Rails:

rails generate/destroy controller/model [controller/model Name]

Misalnya, jika Anda perlu membuat Pengontrol Pengguna:

rails generate controller User

atau

rails g controller User

Jika Anda ingin menghancurkan pengontrol Pengguna atau kembali ke tindakan di atas, gunakan:

rails destroy controller User

atau:

rails d controller User

masukkan deskripsi gambar di sini


4

Anda bisa menggunakan rails d model/controller/migration ...untuk menghancurkan atau menghapus perubahan yang dihasilkan dengan menggunakan rails generateperintah.

Sebagai contoh:

rails g model Home name:string

membuat model bernama homedengan atribut name. Untuk menghapus file dan kode yang dihasilkan dari perintah itu bisa kita gunakan

rails d model Home

3

Anda dapat menghancurkan semua hal yang diciptakan dengan cara yang sama kecuali perubahan hal kecil. Untuk controller,

rails d controller_name (d stands for destroy)

Untuk Model

rails d model_name

Anda tinggal memasukkan d(destroy)alih-alih g(generate)dalam migrasi Anda.


3

Jika Anda lebih suka menghapus controller secara manual:

Untuk controller welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

3

Anda dapat mengembalikan

rails g/generate controller/model/migration xxx

output dengan menggunakan:

 rails d/destroy controller/model/migration xxx

3

Misalkan saya telah membuat controller bernama "sample" seperti:

rails generate controller sample

Jika saya harus menghancurkan pengontrol ini, yang harus saya lakukan adalah bertukar generatedengan destroy, seperti pada

rails destroy controller sample.

Jika Anda ingin membalikkan generasi, yang harus Anda lakukan hanyalah bertukar generatedengan destroy.


3

Jika Anda menggunakan Rails, gunakan rails d controller Users.

Dan, jika Anda menggunakan Zeus, gunakan zeus d controller Users.

Di sisi lain, jika Anda menggunakan git atau SVN, kembalikan perubahan Anda dengan nomor komit. Ini jauh lebih cepat.


3

Anda dapat membatalkan rails generatedengan cara berikut:

  • Untuk model: rails destroy MODEL
  • Untuk pengontrol: rails destroy controller_name

1

Untuk membalikkan itu, kita hancurkan saja. Buka aplikasi Terminal dan pergi ke direktori proyek, lalu ketik ini:

rails destroy model CamelCase
rails destroy controller CamelCase

Di mana CamelCaseada nama model atau pengontrol apa pun. Ini akan menghapus model, migrasi dan beberapa file uji terkait. (Anda dapat melihat hasilnya di jendela Terminal setelah Anda menjalankan perintah.)


0

Kami menggunakan menghasilkan sebagai rails generate app. Jadi regenerasi generatepernyataan apa pun dapat dibalik menggunakan destroypernyataan. Hanya mengganti generatedengan destroy yaitu rails generate appdapat ditulis sebagai rails destroy app' rel menghasilkan ____ asrel menghancurkan ____ `


0

Perancah yang dihapus untuk model yang dipilih:

bin/rails d scaffold <AccessControl> //model name

0

Sebelum mengembalikan rails generate, pastikan Anda mengembalikan migrasi terlebih dahulu.

Kasus 1: jika Anda ingin mengembalikan perancah maka jalankan perintah ini:

rails destroy scaffold MODEL_NAME

Kasus 2: jika Anda ingin mengembalikan model maka jalankan perintah ini:

rails destroy model MODEL_NAME

Kasus 3: jika Anda ingin mengembalikan pengontrol maka jalankan perintah ini:

rails destroy controller CONTROLLER_NAME

Catatan: Anda juga dapat menggunakan pintasan dsebagai ganti destroy.



0

Semua versi rel memiliki "hancurkan", jadi-, jika Anda membuat perancah (misalnya) bernama "tugas" menggunakan generator, untuk menghancurkan semua perubahan dari langkah yang menghasilkan Anda harus mengetik:

rails destroy scaffold Tasks

Semoga ini bisa membantu Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.