obj.update_attribute(:only_one_field, 'Some Value')
obj.update_attributes(field1: 'value', field2: 'value2', field3: 'value3')
这两种方法都可以更新对象,而不必显式地告诉ActiveRecord更新。
Rails API说:
update_attribute 更新单个属性并保存记录,而不经过正常的验证过程。这对于现有记录上的布尔标记特别有用。当混合了验证模块(默认情况下是这样)时,Base中的常规update_attribute方法将被this替换。
update_attributes 更新传入哈希中的所有属性并保存记录。如果对象无效,保存将失败,并返回false。
所以如果我不想验证对象,我应该使用#update_attribute。如果我在#before_save上有这个更新,它会stackoverflow吗?
我的问题是#update_attribute是否也绕过了之前的保存或只是验证。
另外,传递散列到#update_attributes…的正确语法是什么?请查看顶部的示例。