Как запустить "рельсы генерировать леса", когда модель уже существует?
Я новичок в 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