我正在關注2012年6月製作的視頻教程。當時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>
沒有創建記錄!我猜想它與Rails 4和5中的strong parameters
有關?
最後,這裏是我的問題:
- 出了什麼問題?有沒有其他的方法,使用控制檯來創建?
- 這是因爲車型的關係:
belongs_to :user
? - 我知道有些寶石在引入強參數之前「模仿」一種狀態,但我寧願不使用這些;這感覺就像作弊!
您沒有爲汽車指定用戶。檢查'car.errors',你會看到它爲什麼沒有保存。 –
@SergioTulentsev:你是對的!我提供了一個'''id'''和'''user_id''',現在我可以創建一個新的記錄!謝謝!我認爲'''id'''會自動生成,但在這種情況下顯然不是! –
此外:我不能用'''user_id''創建一個不存在的用戶! Rails在我的商店中有很多隱藏的__gems__! –