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


471

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

Я хотел бы автоматически удалить все сопоставления ресурсов для модели / контроллера, удаленные в файле rout.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
Кстати, как я могу использовать эту команду, чтобы удалить эшафот? Модель и контроллер работают нормально ... но как мне полностью поменять эшафот?
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флага.


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

24

rails destroy controller Controller_nameвозвращал кучу ошибок. Чтобы иметь возможность уничтожить контроллер, мне пришлось удалить связанные маршруты в маршрутах. 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, используйте 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

Мы используем генерировать как rails generate app. Таким образом, восстановление любого generateоператора может быть отменено с помощью destroyоператора. Просто замените generateна destroy ie, 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», поэтому, если вы создадите (например) скаффолд с именем «tasks» с помощью генератора, чтобы уничтожить все изменения этого шага генерации, вам придется набрать:

rails destroy scaffold Tasks

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.