Rails 5.0.0.1:无法从控制台创建 class 实例?

Rails 5.0.0.1: can not create a class instance from the console?

我正在关注2012年6月制作的视频教程。当时Ruby版本是1.9.3,Rails版本是3。现在我正在尝试 Rails 5.0.0.1.

中的代码示例

我们知道现在 strong parameters 必须在 create 动作中使用。使用控制台创建 class 的实例对象时是否也适用?

在练习中,模型用户由 rails g scaffold user name movie 生成。下一条指令是 rake db:migrate(当然),然后进入控制台并创建一个用户记录。一切顺利;创建并保存所有字段都有值的记录。

但现在是我的问题所在的部分:下一个命令是:

rails g scaffold car user:belongs_to condition year:integer.

好的; rake db:migrate 再次打开控制台。当我想创建一个 Car 记录时发生了这种情况:

>> 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 有关

最后,我的问题是:

Rails 5 默认需要 belongs_to 个关联,因为 this PR.

您可以使用 belongs_to :user, optional: true.

指定该字段是可选的

此外,如果您的模型无法保存,查看其 errors 对象通常会有所帮助。

您可以通过 puts car.errors.

之类的操作来做到这一点

强参数不会影响您在控制台中执行的任何操作。他们的重点是将质量分配保护从模型中移到控制器中。