Nasıl bir 'raylar üretmek' ters


471

Oluşturduğum tüm dosyaları silmek ve yapılan değişiklikleri geri almak istiyorum, ancak veritabanına değil, daha çok yapılandırma dosyalarına geri dönmek istiyorum.

Route.rb dosyasında ve değişikliklerin yapılmış olabileceği diğer her yerde silinen model / denetleyicinin tüm kaynak eşlemelerini otomatik olarak silmek istiyorum.

Yanıtlar:


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

Rails 3.2 d, komuta yeni bir kısayol ekler , böylece şimdi yazabilirsiniz:

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

1
Btw, bir iskeleyi silmek için bu komutu nasıl kullanabilirim? Model ve kontrolör iyi çalışıyor ... ama bir iskeleyi nasıl tamamen tersine çevirebilirim?
marcamillion

6
Tamam, anladım. Belki de bir şey buğuyordum. Az önce koştum rails destroy scaffold lalalalve işe yaradı.
marcamillion

38
@marcamillion O ekstra 'L' olmalıydı.
varatis

1
Gibi bir gem yükleme ile ilişkili dosyaları kaldırma hakkında nerails generate <gemname>:install
doug

2
@doug, bunun mümkün olduğunu düşünmüyorum. En iyi seçeneğiniz, -fdosyaları yeniden oluşturmaya / yeniden düzenlemeye zorlamak için jeneratörü bayrakla yeniden çalıştırmaktır ... Daha sonra hangi dosyaları oluşturduğunu / değiştirdiğini görebilir ve bunları manuel olarak silmeye devam edebilirsiniz.
Fábio Batista

49

Burada -pbayrak bahsetmeye değer ( taklit için "p" ).

Bunu komuta eklerseniz, bir "test" çalıştırması gerçekleştirir ve gerçekte silmeden hangi dosyaların silineceğini gösterir.

$ 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

Bundan memnunsanız, komutu -pbayrak olmadan tekrar çalıştırın .


Bence bu en iyi cevap
Emil Reña Enriquez

24

rails destroy controller Controller_namebir sürü hata döndürüyordu. Denetleyiciyi yok edebilmek için route.rb içindeki ilgili yolları kaldırmak zorunda kaldım. PS Rayları kullanıyorum 3.1


Bu cevabın seçilen doğru cevap olmasını istemiyorsanız lütfen eylemlerinizi özetlemeyin.
Teneke Adam

11

Bu, Rails'te bir denetleyici veya model oluşturmak veya yok etmek için kullanılan bir prototiptir:

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

Örneğin, bir Kullanıcı Denetleyicisi oluşturmanız gerekirse:

rails generate controller User

veya

rails g controller User

Kullanıcı denetleyicisini yok etmek veya yukarıdaki eyleme geri dönmek istiyorsanız şunu kullanın:

rails destroy controller User

veya:

rails d controller User

resim açıklamasını buraya girin


4

Komutu rails d model/controller/migration ...kullanarak oluşturulan değişiklikleri yok etmek veya kaldırmak için kullanabilirsiniz rails generate.

Örneğin:

rails g model Home name:string

homeözniteliğe sahip bir model oluşturur name. Bu komuttan oluşturulan dosyaları ve kodu kaldırmak için kullanabiliriz

rails d model Home

3

Küçük şey değişimi dışında aynı şekilde yaratılan her şeyi yok edebilirsiniz. Kontrolör için,

rails d controller_name (d stands for destroy)

Model için

rails d model_name

sadece göçünüz d(destroy)yerine koymak g(generate).


3

Denetleyiciyi manuel olarak silmeyi tercih ediyorsanız:

Denetleyici için 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

Geri alabilirsin

rails g/generate controller/model/migration xxx

kullanarak çıktı:

 rails d/destroy controller/model/migration xxx

3

Diyelim ki "sample" adında bir kontrolör oluşturdum:

rails generate controller sample

Bu denetleyici yok etmek varsa, ben yapmam gereken takas olduğu generateile destroyolduğu gibi,

rails destroy controller sample.

Eğer nesli tersine çevirmek istiyorsanız, tek yapmanız gereken takas generateetmek destroy.


3

Rails kullanıyorsanız, kullanın rails d controller Users.

Ve eğer Zeus kullanıyorsanız, kullanın zeus d controller Users.

Öte yandan, git veya SVN kullanıyorsanız değişikliklerinizi kayıt numarasıyla geri alın. Bu çok daha hızlı.


3

A'yı rails generateaşağıdaki şekillerde geri alabilirsiniz :

  • Model için: rails destroy MODEL
  • Kontrolör için: rails destroy controller_name

1

Bunu tersine çevirmek için onu yok ediyoruz. Terminal uygulamasını açın ve proje dizinine gidin, ardından şunu yazın:

rails destroy model CamelCase
rails destroy controller CamelCase

CamelCaseHerhangi bir modelin veya denetleyicinin adı nerede . Modeli, geçişi ve ilgili bazı test dosyalarını kaldıracaktır. (Komutu çalıştırdıktan sonra sonucu Terminal penceresinde görebilirsiniz.)


0

Biz üretmek olarak kullanın rails generate app. Böylece herhangi bir generateifadeyi yeniden oluşturmak ifadeyi kullanarak tersine çevrilebilir destroy. Sadece değiştirmek generateile destroy ie rails generate appolarak yazılabilir rails destroy app' raylar üretmek ____ as`____ raylar yok


0

Seçilen model için kaldırılmış iskele:

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

0

Geri almadan önce rails generate, emin olun göçünü geri alma ilki.

Durum 1: İskele'yi geri almak istiyorsanız, bu komutu çalıştırın:

rails destroy scaffold MODEL_NAME

Durum 2: Modeli geri almak istiyorsanız, bu komutu çalıştırın:

rails destroy model MODEL_NAME

Durum 3: Denetleyiciyi geri almak istiyorsanız, bu komutu çalıştırın:

rails destroy controller CONTROLLER_NAME

Not: dyerine kısayol da kullanabilirsiniz destroy.


0

Tersine çevirmek için şunu rails generatekullanın rails destroy:

rails destroy Model

Daha rails destroyfazla bilgi için " " bölümüne bakın .


0

Rayların tüm sürümlerinde bir "yok etme" vardır, bu nedenle, bir jeneratör kullanarak "görevler" adlı bir (örneğin) iskele oluşturursanız, bu oluşturma adımındaki tüm değişiklikleri yok etmek için aşağıdakileri yazmanız gerekir:

rails destroy scaffold Tasks

Umarım size yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.