update_attribute vs update_attributes Rails 4

Kel*_*lly 4 ruby-on-rails ruby-on-rails-4

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

这很好用:

order.update_attribute(:order_completed, "true")
order.update_attribute(:stripe_email, params[:stripeEmail])
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用update_attributes时,我的数据不会保存到db.

这是代码:

order.update_attributes(order_completed: "true", stripe_email: params[:stripeEmail])
Run Code Online (Sandbox Code Playgroud)

有谁看到我的错误在哪里?从我读过的所有应该有效的东西.谢谢你的帮助!

pdo*_*obb 15

update_attributes将触发验证,而update_attribute不会.如果您知道要绕过验证,那么从Hash中保存属性的最佳方法是:

order.attributes = { order_completed: "true", stripe_email: params[:stripeEmail] }
order.save(validate: false)
Run Code Online (Sandbox Code Playgroud)

要查看失败的内容,请查看order.errors或更改您的调用update_attributes!(使用!),这将引发显示验证失败的异常.

Rails 4更新

update_attributesupdate_attributes!对于别名updateupdate!Rails中4+.

  • 在执行`order.update_attributes`之后或在执行`order.save`之后,您可以检查`order.errors`.使用控制器中的调试器或将其输出到日志或适合您的任何内容. (2认同)