Ruby on rails 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脚手架车用户:属于条件年:

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

我们知道,现在在
创建
操作中必须使用
强参数。这在使用控制台创建类的实例对象时也适用吗

在练习中,
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”。*?