Ruby on rails Rails 5.0.0.1:无法从控制台创建类实例?
我正在关注2012年6月制作的视频教程。当时的Ruby版本是1.9.3,Rails版本是3。现在我正在尝试Rails 5.0.0.1中的代码示例 我们知道,现在在Ruby on rails Rails 5.0.0.1:无法从控制台创建类实例?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我正在关注2012年6月制作的视频教程。当时的Ruby版本是1.9.3,Rails版本是3。现在我正在尝试Rails 5.0.0.1中的代码示例 我们知道,现在在创建操作中必须使用强参数。这在使用控制台创建类的实例对象时也适用吗 在练习中,railsgscaffold用户名电影生成了一个模型用户。下一条指令是rakedb:migrate(当然),然后进入控制台并创建用户记录。一切顺利;创建并保存的记录,所有字段都有一个值 但现在我的问题是:下一个命令是: rails g脚手架车用户:属于条件年:
创建操作中必须使用强参数。这在使用控制台创建类的实例对象时也适用吗
在练习中,railsgscaffold用户名电影
生成了一个模型用户。下一条指令是rakedb:migrate
(当然),然后进入控制台并创建用户记录。一切顺利;创建并保存的记录,所有字段都有一个值
但现在我的问题是:下一个命令是:
rails g脚手架车用户:属于条件年:整数
嗯,<代码>rake db:再次迁移
,然后打开控制台。当我想创建一个汽车记录时发生了这种情况:
>> 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>
>car=car.create(年份:2003,条件:'ok')
(0.2ms)开始事务处理
(0.1ms)回滚事务
=> #
没有创建任何记录!我怀疑这与Rails 4和5中的强参数有关
最后,我的问题是:
- 出了什么问题?还有其他方法吗,使用控制台创建
- 这是因为车型的关系:
属于\u to:user
- 我知道在引入强参数之前,有一些gem可以“模拟”一种状态,但我不想使用它们;这感觉像作弊李>
Rails 5需要在默认情况下属于关联,因为
您可以使用归属于:用户,可选:true
指定该字段为可选字段
此外,如果您的模型未能保存,查看其错误
对象通常会有所帮助
您可以通过执行类似于放置car.errors
的操作来完成此操作
强参数不会影响您在控制台中执行的任何操作。它们的全部目的是将质量分配保护从模型中移出并移入控制器。Rails 5需要在默认情况下属于关联
您可以使用归属于:用户,可选:true
指定该字段为可选字段
此外,如果您的模型未能保存,查看其错误
对象通常会有所帮助
您可以通过执行类似于放置car.errors
的操作来完成此操作
强参数不会影响您在控制台中执行的任何操作。他们的全部目的是将质量分配保护从模型中移到控制器中。您没有为汽车指定用户。检查car.errors
,你就会明白为什么它没有被保存。@SergioTulentsev:你说得对!我提供了一个id
和一个用户id
,现在我可以创建一个新记录了!非常感谢。我以为id
会自动生成,但显然在这种情况下不会!此外:我无法使用非现有用户的用户id
创建!Rails为我准备了很多隐藏的宝石!是的,这叫做“参照完整性”:)是的,塞吉奥,我正在学习新的技巧;对于所有感兴趣的人,我发现了这篇文章,这似乎是一个很好的解释:>您没有为汽车指定用户。检查car.errors
,你就会明白为什么它没有被保存。@SergioTulentsev:你说得对!我提供了一个id
和一个用户id
,现在我可以创建一个新记录了!非常感谢。我以为id
会自动生成,但显然在这种情况下不会!此外:我无法使用非现有用户的用户id
创建!Rails为我准备了很多隐藏的宝石!是的,这叫做“参照完整性”:)是的,塞吉奥,我正在学习新的技巧;对于所有感兴趣的人来说,我发现这篇文章似乎是一个很好的解释:>有趣的是:我可以通过只提供一个现有的用户id
来创建一个记录,而忽略所有其他参数!因为类中没有定义验证
?教程(请记住,从2012年开始)显示用户id为nil
,但在当前Rails版本中,这是不可能的…是的,user\u id
是唯一必需的字段,因为您在Car
车型上没有任何其他验证。如果通过执行optional:true
位使user\u id
字段可选,则可以创建一个没有参数的新Car
,如:Car=Car.create代码>,并且汽车
将有效。例如,car.u有效吗?==真的
。看看我做了什么!我仍然可以胡闹:code
>car=car.first car Load(0.3ms)选择“cars”。*从“cars”中按“cars”排序。“id”ASC限制?[[“LIMIT”,1]=>#>>car.update_属性(:user_id,nil)code
对不起;我不知道如何在注释中添加代码:-(我想展示的是,用户id可以再次设置为零。有趣的是:我可以通过只提供现有的用户id
,而不提供所有其他参数来创建记录!因为类中没有定义验证
。《教程》(请记住,从2012年开始)显示用户id为nil
,但在当前Rails版本中,这是不可能的…是的,user\u id
是唯一必需的字段,因为在Car
模型上没有任何其他验证。如果通过执行optional:true
位使user\u id
字段成为可选字段,则您将无法执行此操作o创建一个没有参数的新Car
,比如:Car=Car.create!
,并且Car
将是有效的。例如Car.is\u有效吗?==true
。看看我做了什么!我仍然可以胡闹:code
>Car=Car.first Car Load(0.3ms)从“cars”订单中选择“cars”。*?