Ruby on rails 更新\u属性vs更新\u属性Rails 4

Ruby on rails 更新\u属性vs更新\u属性Rails 4,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我试图在某个动作后更新对象的属性。如果我使用update_属性,所有内容都会正确地保存到数据库中,但是我有很多东西需要更新,所以它会变得非常重复 这很好: order.update_attribute(:order_completed, "true") order.update_attribute(:stripe_email, params[:stripeEmail]) 但是,当我尝试使用update_属性时,我的数据不会保存到数据库中 这是代码: order.update_attribute

我试图在某个动作后更新对象的属性。如果我使用update_属性,所有内容都会正确地保存到数据库中,但是我有很多东西需要更新,所以它会变得非常重复

这很好:

order.update_attribute(:order_completed, "true")
order.update_attribute(:stripe_email, params[:stripeEmail])
但是,当我尝试使用update_属性时,我的数据不会保存到数据库中

这是代码:

order.update_attributes(order_completed: "true", stripe_email: params[:stripeEmail])
有人知道我的错误在哪里吗?从我读到的每一本应该有用的书中。谢谢你的帮助

将启动验证,而不会。如果知道要绕过验证,则从哈希保存属性的最佳方法是:

order.attributes = { order_completed: "true", stripe_email: params[:stripeEmail] }
order.save(validate: false)
要查看失败原因,请查看顺序。错误或将调用更改为更新属性(使用
)将引发异常,显示验证失败的内容

Rails 4更新
更新属性
更新属性
是Rails 4+和中的别名。

更新\u属性也可能由质量分配约束控制。如果您使用的是rails 4,请检查是否覆盖了以下内容:

params.require(:order).permit(:order_completed, :stripe_email)

谢谢你的回答!这可能是一个愚蠢的问题,但我到底在哪里找到order.errors,我仍然想看看失败的地方。再次感谢你的帮助!执行
order.update\u attributes
或执行
order.save
后,您可以检查
order.errors
。可以在控制器中使用调试器,也可以将调试器输出到日志或任何适合您的内容。@pdobb不客气。这是一个很好的答案,所以添加一个新的没有意义,最好只添加我的一点:)这只是问题,如果
params[:order]
是质量分配方法的参数。她自己在这里建立一个新的散列,所以这不是问题所在。