Как запустить `rails generate scaffold` когда модель уже существует? - PullRequest
320 голосов
/ 02 декабря 2010

Я новичок в Rails, так что мой текущий проект находится в странном состоянии.

Одной из первых вещей, которые я создал, была модель "Кино". Затем я начал определять его более подробно, добавил несколько методов и т. Д.

Теперь я понимаю, что должен был сгенерировать его с помощью rails generate scaffold для подключения таких вещей, как маршрутизация, представления, контроллер и т. Д.

Я попытался сгенерировать строительные леса, но я получил сообщение о том, что файл миграции с таким именем уже существует.

Какой сейчас лучший способ для меня создать леса для моего "Кино"? (с использованием рельсов 3)

Ответы [ 6 ]

573 голосов
/ 02 декабря 2010

TL; DR : rails g scaffold_controller <name>

Даже если у вас уже есть модель, вы все равно можете сгенерировать необходимый контроллер и файлы миграции, используя опцию rails generate. Если вы запустите rails generate -h, вы увидите все доступные вам опции.

Rails:
  controller
  generator
  helper
  integration_test
  mailer
  migration
  model
  observer
  performance_test
  plugin
  resource
  scaffold
  scaffold_controller
  session_migration
  stylesheets

Если вы хотите создать каркас контроллера для вашей модели, см. scaffold_controller. Просто для ясности, вот описание этого:

Заглушает контроллер леса и его виды. Передать название модели, либо CamelCased или under_scored, и список представлений в качестве аргументов. Имя контроллера извлекается как множественная версия модели имя.

Чтобы создать контроллер в модуле, укажите название модели как путь как 'parent_module / controller_name'.

Это генерирует класс контроллера в приложении / контроллерах и вызывает помощника, генератор шаблонов и генераторы тестовых фреймворков.

Чтобы создать свой ресурс, вы должны использовать генератор resource, а для создания миграции вы также можете увидеть генератор migration (видите, во всем этом безумии есть образец). Они предоставляют опции для создания отсутствующих файлов для создания ресурса. В качестве альтернативы вы можете просто запустить rails generate scaffold с опцией --skip, чтобы пропустить любые существующие файлы:)

Я рекомендую потратить некоторое время на поиск вариантов внутри генераторов. Это то, что я не чувствую, они очень хорошо документированы в книгах и тому подобное, но они очень удобны.

63 голосов
/ 02 ноября 2014

Отличный ответ от Lee Jarvis, это всего лишь команда, например;у нас уже есть существующая модель под названием User:

rails g scaffold_controller User
29 голосов
/ 06 декабря 2012

Для тех, кто запускает приложение rails с существующей базой данных, есть классный гем под названием schema_to_scaffold для генерации сценария скаффолда. выводит:

rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string

от вашего schema.rb нашего вашего переименованного schema.rb. Проверьте это

12 голосов
/ 10 февраля 2016

Эта команда должна сделать трюк:

$ rails g scaffold movie --skip
7 голосов
/ 22 февраля 2018

В Rails 5 , вы все равно можете запустить

$rails generate scaffold movie --skip

для создания всех отсутствующих файлов скаффолдов или

rails generate scaffold_controller Movie

для создания контроллера и просмотра только.

Для лучшего объяснения проверьте эстакада рельсов

7 голосов
/ 20 сентября 2016

Вы можете использовать scaffold_controller и не забудьте передать attributes модели, или скаффолд будет создан без атрибутов.

rails g scaffold_controller User name email
# or
rails g scaffold_controller User name:string email:string

Эта команда создаст следующие файлы:

create  app/controllers/users_controller.rb
invoke  haml
create    app/views/users
create    app/views/users/index.html.haml
create    app/views/users/edit.html.haml
create    app/views/users/show.html.haml
create    app/views/users/new.html.haml
create    app/views/users/_form.html.haml
invoke  test_unit
create    test/controllers/users_controller_test.rb
invoke  helper
create    app/helpers/users_helper.rb
invoke    test_unit
invoke  jbuilder
create    app/views/users/index.json.jbuilder
create    app/views/users/show.json.jbuilder
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...