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
有关
最后,我的问题是:
- 出了什么问题?有没有其他方法,使用控制台创建?
- 是不是因为Car型号的关系:
belongs_to :user
?
- 我知道有一些 gems 'mimic' 是引入强参数之前的状态,但我宁愿不使用这些;感觉像是在作弊!
Rails 5 默认需要 belongs_to
个关联,因为 this PR.
您可以使用 belongs_to :user, optional: true
.
指定该字段是可选的
此外,如果您的模型无法保存,查看其 errors
对象通常会有所帮助。
您可以通过 puts car.errors
.
之类的操作来做到这一点
强参数不会影响您在控制台中执行的任何操作。他们的重点是将质量分配保护从模型中移到控制器中。
我正在关注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
有关
最后,我的问题是:
- 出了什么问题?有没有其他方法,使用控制台创建?
- 是不是因为Car型号的关系:
belongs_to :user
? - 我知道有一些 gems 'mimic' 是引入强参数之前的状态,但我宁愿不使用这些;感觉像是在作弊!
Rails 5 默认需要 belongs_to
个关联,因为 this PR.
您可以使用 belongs_to :user, optional: true
.
此外,如果您的模型无法保存,查看其 errors
对象通常会有所帮助。
您可以通过 puts car.errors
.
强参数不会影响您在控制台中执行的任何操作。他们的重点是将质量分配保护从模型中移到控制器中。