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


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.