2010-11-12 4 views
396

т. Е. Удалить все созданные файлы и отменить сделанные изменения? Не обязательно для db, но больше для файлов конфигурации.Как мне изменить рельсы?

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

Спасибо.

ответ

809
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 
+4

Это именно то, что я искал. – marcamillion

+1

Btw, как я могу использовать эту команду для удаления эшафота? Модель и контроллер работают нормально ... но как мне полностью отменить эшафот? – marcamillion

+5

Хорошо, я понял. Возможно, я что-то опечалил. Я просто управлял «рельсами, разрушающими эшафот лалалал», и это сработало. – marcamillion

12

Вы используете систему контроля версий (Subversion, Git, что угодно)? Просто вернись. Если нет - почему бы и нет? !!

+0

Hrmm .... интересный. Я никогда не думал об этом ... однако, так получилось, что я не думаю, что у меня есть фиксация состояния, в которое я хочу вернуться. Это совершенно новое приложение, и я просто создал кучу вещей. Но теперь я хочу избавиться от них. Спасибо за подсказку. – marcamillion

+8

Reverting может удалить другой код, который не был предназначен для удаления (например, говорят, что изменения в контроллере X требуются, но хотят удалить контроллер Y и связанные с ним модели) – Zabba

+5

@Zabba: Есть некоторые правила торговли: перед любыми разрушительными команда, всегда фиксировать. Генераторы Rails распечатывают список того, что они изменяют/создают. Они даже предупреждают вас, когда вы собираетесь что-то переписать, и вы можете проверить различия. Знайте свои инструменты: git дает вам возможность выборочно откатывать некоторые файлы, а не другие. Вы можете сделать это в командной строке, или если вы используете RubyMine, у вас будут красивые графические инструменты git для различий, откатов, фиксации и т. Д. –

20

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

+5

да, хорошо поймать майкел .. i hd same issue thanks – anshuman

3

Вы можете использовать rails d model/controller/migration ... для уничтожения или удаления изменений, сгенерированных с помощью команды генерации рельсов.

Пример: rails g model Home name:string создает модель с именем home с атрибутом name. Чтобы удалить файлы и код, сгенерированные из этой команды, мы можем использовать команду rails d model Home.

9

Это прототип для создания или уничтожения контроллера или модели в рельсах.

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

, например, если вам нужно создать контроллер пользователя

rails generate controller User 

или

rails g controller User 

если хотите уничтожить контроллер пользователя или вернуться к выше действия затем

rails destroy controller User 

или

rails d controller User 

enter image description here

1

вы можете вернуть ваш rails g/generate controller/model/migration xxx выход с помощью:

rails d/destroy controller/model/migration xxx 
1

При использовании реек, используйте rails d controller Users

и если вы используете Зевс, используйте zeus d controller Users. С другой стороны, если вы используете git или SVN, верните свои изменения с номером фиксации. Это намного быстрее.

34

Здесь стоит отметить флаг -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.

+0

Я думаю, что это лучший ответ –

1

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

rails destroy model CamelCase 
rails destroy controller CamelCase 

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

2

Для удаления контроллера вручную, в случае, если команда rails d controller не работает:

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

Вы можете отменить рельсы порождают в следующих способов:

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

Всех поколений рельсов имеет уничтожить их, так, если вы создаете с помощью генератора а (например) помоста под названием «задача», чтобы уничтожить все изменения этого ganerate вы будете иметь для заполнения:

rails destroy scaffold Tasks 

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

0

Перед тем, как возвратить rails generate, пожалуйста, убедитесь, что вы откат миграции.

Случай 1: если вы хотите, чтобы вернуться эшафот затем запустить эту команду -

rails destroy scaffold MODEL_NAME 

Случай 2: если вы хотите, чтобы вернуть модель затем запустить эту команду -

rails destroy model MODEL_NAME 

Случай 3: если вы хотите вернуть контроллер затем запустить эту команду -

rails destroy controller CONTROLLER_NAME 

Примечание: вы можете также использовать ярлык d вместо destroy

0

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

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

Предположим, что я создал контроллер с именем образца, как в

rails generate controller sample 

Если я должен уничтожить этот контроллер, все у меня есть сделать замену сгенерировать с уничтожить, как в

rails destroy controller sample. 

Если вы хотите отменить поколение, все, что вам нужно сделать, это поменять местами «генерировать» с «уничтожить»

0

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

Смежные вопросы