我正在关注2012年6月制作的视频教程。当时Ruby版本1.9.3和Rails版本为3。现在我正在尝试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
。
行;再次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
?答案 0 :(得分:2)
Rails 5默认需要belongs_to
个关联,因为host names。
您可以使用belongs_to :user, optional: true
指定该字段是可选的。
此外,如果您的模型无法保存,那么查看其errors
对象通常会很有帮助。
您可以通过执行puts car.errors
之类的操作来完成此操作。
强参数不会影响您在控制台中执行的任何操作。他们的全部意义在于将质量分配保护从模型中转移到控制器中。