Как запустить «rails генерировать леса», когда модель уже существует?
Я новичок в Rails, поэтому мой текущий проект находится в странном состоянии.
Одной из первых вещей, которые я создал, была модель «Кино». Затем я начал более подробно определять его, добавлял несколько методов и т. Д.
Теперь я понимаю, что я должен был сгенерировать его с помощью rails generate scaffold
чтобы подключать такие вещи, как маршрутизация, представления, controller и т. Д.
- Автозагрузка файлов lib в Rails 4
- Почему `config.time_zone`, кажется, ничего не делает?
- Не разрабатывать секретный ключ
- Rails - Nested включает в Active Records?
- Удалить ссылку отправляет «Get» вместо «Удалить» в режиме Rails 3
Я попытался создать леса, но я получил сообщение об ошибке, когда файл миграции с тем же именем уже существует.
Каков наилучший способ создания лесов для моего «Кино» сейчас? (с использованием рельсов 3)
- Можно ли установить переменные ENV для среды разработки rails в моем коде?
- Автозагрузка Rails 3
- ActiveModel :: ForbiddenAttributesError при создании нового пользователя
- Как изменить привязку привязки по умолчанию к серверу разработки Rails 4.2?
- Как использовать проблемы в Rails 4
- Почему Google Oauth возвращает недопустимый redirect_urI в моем приложении Rails?
- Rails form_for: remote => true не вызывает метод js
- Где разместить глобальные переменные в Rails 3
TL; DR : rails g scaffold_controller
Несмотря на то, что у вас уже есть модель, вы все равно можете сгенерировать необходимые файлы controllerа и миграции с помощью опции 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
. Просто для ясности, вот описание этого:
Вытесняет controller леса и его виды. Передайте имя модели, либо CamelCased, либо under_scored, и список представлений в качестве аргументов. Имя controllerа извлекается как множественная версия имени модели.
Чтобы создать controller внутри модуля, укажите имя модели как путь, например ‘parent_module / имя_controllerа’.
Это создает class controllerа в приложении / controllerах и вызывает вспомогательные, генераторы шаблонов и генераторы тестовых фреймов.
Чтобы создать свой ресурс, вы должны использовать генератор resource
и создать миграцию, вы также можете увидеть генератор migration
(см. Рисунок для всего этого безумия). Они предоставляют опции для создания недостающих файлов для создания ресурса. В качестве альтернативы вы можете просто запускать rails generate scaffold
с опцией --skip
чтобы пропустить любые файлы, которые существуют 🙂
Я рекомендую потратить некоторое время на поиск опций внутри генераторов. Это то, что я не чувствую, очень хорошо документировано в книгах и таких, но они очень удобны.
Отличный ответ Lee Jarvis
, это просто команда, например; у нас уже есть существующая модель под названием User:
rails g scaffold_controller User
Для тех, кто schema_to_scaffold
приложение rails с существующей базой данных, есть classный жемчуг, называемый schema_to_scaffold
для создания скрипта scaffold. он выводит:
rails g scaffold users fname:string lname:string bdate:date email:string encrypted_password:string
от вашего schema.rb
наш переименованный schema.rb.
Проверь это
Эта команда должна сделать трюк:
$ rails g scaffold movie --skip
Вы можете использовать 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
В Rails 5 вы все равно можете запускать
$rails generate scaffold movie --skip
для создания всех отсутствующих файлов леса или
rails generate scaffold_controller Movie
для создания controllerа и просмотра только.
Для лучшего объяснения проверьте эстакады рельсов