Як повернути "генерацію рейок"


471

Я хочу видалити всі створені файли та відкатувати всі внесені зміни, але не обов’язково до бази даних, але більше до конфігураційних файлів.

Я хотів би автоматично видалити всі відображення ресурсів для моделі / контролера, видалених у файлі route.rb та скрізь, що могли бути внесені зміни?

Відповіді:


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

Rails 3.2 додає dкоманду до нового ярлика, тому тепер ви можете написати:

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

1
Btw, як я можу використовувати цю команду для видалення ешафоту? Модель і контролер працюють нормально ... але як я повністю перевернути ешафот?
marcamillion

6
Гаразд, я зрозумів це. Можливо, я щось туманив. Я просто бігав, rails destroy scaffold lalalalі це спрацювало.
marcamillion

38
@marcamillion Повинен був бути додатковим "L".
varatis

1
Як щодо видалення файлів, пов’язаних із встановленням дорогоцінного каменю, наприкладrails generate <gemname>:install
doug

2
@doug, я не думаю, що це можливо. Ваша найкраща ставка - просто перезапустити генератор з -fпрапором, щоб змусити його відтворити / змінити файли… Потім ви зможете побачити, які файли створив / змінив, і продовжити їх видалення вручну.
Фабіо Батіста

49

Тут варто згадати -pпрапор ("р" для вигляд ).

Якщо ви додасте це до команди, вона просто виконає "тестовий" запуск та покаже, які файли буде видалено, не фактично видаляючи їх.

$ 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

Якщо ви цим задоволені, запустіть команду ще раз без -pпрапора.


Я думаю, що це найкраща відповідь
Еміль Ренья Енрікес

24

rails destroy controller Controller_nameповертав купу помилок. Щоб мати змогу знищити контролер, мені довелося видалити пов’язані маршрути у route.rb. PS Я використовую рейки 3.1


Будь ласка, не підбивайте підсумки своїх дій, якщо ви не маєте намір для цієї відповіді обрати правильну відповідь.
Олов'яний чоловік

11

Це прототип для створення або знищення контролера або моделі в Rails:

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

Наприклад, якщо вам потрібно створити контролер користувача:

rails generate controller User

або

rails g controller User

Якщо ви хочете знищити контролер користувача або повернутися до дії, використовуйте:

rails destroy controller User

або:

rails d controller User

введіть тут опис зображення


4

Ви можете використовувати rails d model/controller/migration ...для знищення або видалення змін, створених за допомогою rails generateкоманди.

Наприклад:

rails g model Home name:string

створює модель, названу homeатрибутом name. Щоб видалити файли та код, згенерований з цієї команди, ми можемо використовувати

rails d model Home

3

Ви можете знищити всі речі, створені однаково, за винятком дрібниць. Для контролера,

rails d controller_name (d stands for destroy)

Для моделі

rails d model_name

ви просто помістите d(destroy)замість g(generate)міграції.


3

Якщо ви віддаєте перевагу видалити контролер вручну:

Для контролера 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

Припустимо, я створив контролер з назвою "sample", наприклад:

rails generate controller sample

Якщо я повинен знищити цей контролер, все , що потрібно зробити , це своп generateз destroy, як і в

rails destroy controller sample.

Якщо ви хочете , щоб змінити покоління, все , що вам потрібно зробити , це обмін generateз destroy.


3

Якщо ви використовуєте Rails, використовуйте rails d controller Users.

І, якщо ви використовуєте Зевс, використовуйте zeus d controller Users.

З іншого боку, якщо ви використовуєте git або SVN, скасуйте зміни за допомогою номера комітету. Це набагато швидше.


3

Скасувати ануляцію можна rails generateтакими способами:

  • Для моделі: rails destroy MODEL
  • Для контролера: rails destroy controller_name

1

Щоб змінити це, ми просто знищимо його. Відкрийте додаток Terminal і перейдіть до каталогу проектів, а потім введіть це:

rails destroy model CamelCase
rails destroy controller CamelCase

Звідки CamelCaseназва будь-якої моделі чи контролера. Це видалить модель, міграцію та деякі пов'язані з цим тестові файли. (Ви можете побачити результат у вікні терміналу після запуску команди.)


0

Ми використовуємо Generator як rails generate app. Тому регенерація будь-якого generateоператора може бути повернена за допомогою destroyоператора. Просто замініть generateна destroy тобто rails generate appможе бути записано, коли rails destroy app' рейки генерують ____ asрейки руйнують ____ `


0

Видалено ліси для вибраної моделі:

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

0

Перш ніж скасовуватиrails generate , переконайтеся, що ви попередньо повернули міграцію .

Випадок 1: якщо ви хочете повернути ешафот, виконайте цю команду:

rails destroy scaffold MODEL_NAME

Випадок 2: якщо ви хочете відновити модель, виконайте цю команду:

rails destroy model MODEL_NAME

Випадок 3: якщо ви хочете повернути контролер, виконайте цю команду:

rails destroy controller CONTROLLER_NAME

Примітка. Ви також можете використовувати ярлик dзамість destroy.


0

Щоб повернути назад rails generate, використовуйте rails destroy:

rails destroy Model

Див. " rails destroy" Для отримання додаткової інформації.


0

Усі версії рейок мають "знищити", тобто, якщо ви створите (наприклад) ешафот під назвою "завдання" за допомогою генератора, щоб знищити всі зміни цього кроку створення, вам доведеться набрати:

rails destroy scaffold Tasks

Сподіваюся, це допоможе вам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.