Я следую видеоуроку, сделанному в июне 2012 года. Версия Ruby версии 1.9.3 и Rails версии 3 в то время. Теперь я тестирую примеры кода в Rails 5.0.0.1.Rails 5.0.0.1: не удается создать экземпляр класса из консоли?
Мы знаем, что в настоящее время strong parameters
должно использоваться в действии create
. Это также применимо при использовании консоли для создания экземпляра объекта класса?
В упражнении модель Пользователь был создан: rails g scaffold user name movie
. Следующая инструкция была rake db:migrate
(конечно), а затем зайти в консоль и создать запись пользователя. Все шло хорошо; запись создана и сохранена со всеми полями, имеющими значение.
Но теперь приходит та часть, где мой вопрос о том: следующая команда была:
rails g scaffold car user:belongs_to condition year:integer
.
OK; rake db:migrate
и откройте консоль. Это произошло, когда я хотел создать запись в автомобиле:
>> car = Car.create(year: 2003, condition: 'ok')
(0.2ms) begin transaction
(0.1ms) rollback transaction
=> #<Car id: nil, user_id: nil, condition: "ok", year: 2003, created_at: nil, updated_at: nil>
Запись не была создана! Я подозреваю, что это связано с strong parameters
в Rails 4 и 5?
Наконец, здесь мои вопросы:
- Что пошло не так? И есть ли альтернативный способ, используя консоль для создания?
- Это из-за отношения модели автомобиля:
belongs_to :user
? - Я знаю, что есть драгоценности, которые «имитируют» состояние до введения сильных параметров, но я бы предпочел не использовать их; это похоже на обман!
Вы не указали пользователю автомобиль. Осмотрите «car.errors», и вы поймете, почему он не был сохранен. –
@ Сергио Туленцев: вы правы! Я предоставил '' 'id''' и' '' user_id''', и теперь я _can_ создаю новую запись! Спасибо! Я думал, что '' 'id''' будет автоматически генерироваться, но, очевидно, в этом случае нет! –
Кроме того: я не могу создать с '' 'user_id''' несуществующего пользователя! У Rails есть много скрытых __gems__ для меня! –