Как поменять 'рельсы генерируют'

471

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

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

marcamillion
источник

Ответы:

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
Кстати, как я могу использовать эту команду, чтобы удалить эшафот? Модель и контроллер работают нормально ... но как мне полностью поменять эшафот?
marcamillion
6
Хорошо, я понял это. Возможно, я что-то опечатал. Я просто побежал, rails destroy scaffold lalalalи это сработало.
marcamillion
38
@marcamillion Должно быть, это дополнительная буква «L».
Варатис
1
Как насчет удаления файлов, связанных с установкой gem, таких какrails generate <gemname>:install
doug
2
@ Doug, я не думаю, что это возможно. Лучше всего просто перезапустить генератор с -fфлагом, чтобы заставить его воссоздать / заново отредактировать файлы ... Затем вы можете увидеть, какие файлы он создал / изменил, и продолжить их удаление вручную.
Фабио Батиста,
49

Здесь стоит упомянуть -pфлаг («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флага.

Maikon
источник
Я думаю, что это лучший ответ
Эмиль Ренья Энрикес
24

rails destroy controller Controller_nameвозвращал кучу ошибок. Чтобы иметь возможность уничтожить контроллер, мне пришлось удалить связанные маршруты в маршрутах. PS Я использую рельсы 3.1

Maikel
источник
Пожалуйста, не суммируйте свои действия, если вы не собираетесь, чтобы этот ответ был выбранным правильным ответом.
Жестянщик
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
Patrick_870206
источник
3

Вы можете вернуть свой

rails g/generate controller/model/migration xxx

вывод с помощью:

 rails d/destroy controller/model/migration xxx
жестяной человек
источник
3

Предположим, я создал контроллер с именем «sample», например:

rails generate controller sample

Если я должен уничтожить этот контроллер, все , что нужно сделать , это своп generateс destroy, как и в

rails destroy controller sample.

Если вы хотите , чтобы изменить поколение, все , что вам нужно сделать , это обмен generateс destroy.

L11
источник
3

Если вы используете Rails, используйте rails d controller Users.

И, если вы используете Zeus, используйте zeus d controller Users.

С другой стороны, если вы используете git или SVN, отмените ваши изменения с номером коммита. Это намного быстрее.

Santanu
источник
3

Вы можете отменить rails generateследующие действия:

  • Для модели: rails destroy MODEL
  • Для контроллера: rails destroy controller_name
Vipul Lawande
источник
1

Чтобы изменить это, мы просто уничтожаем это. Откройте приложение Terminal и перейдите в каталог проекта, затем введите:

rails destroy model CamelCase
rails destroy controller CamelCase

Где CamelCaseимя любой модели или контроллера. Это удалит модель, миграцию и некоторые связанные тестовые файлы. (Вы можете увидеть результат в окне терминала после выполнения команды.)

Чутипонг Роубклом
источник
0

Мы используем генерировать как rails generate app. Таким образом, восстановление любого generateоператора может быть отменено с помощью destroyоператора. Просто замените generateна destroy ie, rails generate appможно написать, как rails destroy app' рельсы генерируют ____ asрельсы разрушают ____ `

Кришнарадж Р
источник
0

Удалены строительные леса для выбранной модели:

bin/rails d scaffold <AccessControl> //model name
Динеш Vaitage
источник
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», поэтому, если вы создадите (например) скаффолд с именем «tasks» с помощью генератора, чтобы уничтожить все изменения этого шага генерации, вам придется набрать:

rails destroy scaffold Tasks

Надеюсь, это поможет вам.

Flautarian
источник