Как запустить "рельсы генерировать леса", когда модель уже существует?

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

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

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

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

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

Ответ 1

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/имя_контроллера'.

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

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

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

Ответ 2

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

rails g scaffold_controller User

Ответ 3

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

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

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

Ответ 4

Эта команда должна выполнить трюк:

$ rails g scaffold movie --skip

Ответ 5

Вы можете использовать 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