Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Run Code Online (Sandbox Code Playgroud)
这两个都将更新对象,而不必明确告知AR更新.
Rails API说:
for update_attribute
更新单个属性并保存记录,而无需通过正常的验证过程.这对现有记录上的布尔标志特别有用.混合验证模块时,Base中的常规update_attribute方法将替换为此默认值.
for update_attributes
更新传入的Hash中的所有属性并保存记录.如果对象无效,则保存将失败并返回false.
因此,如果我不想验证对象,我应该使用update_attribute.如果我在before_save上有这个更新怎么办,它会堆栈溢出吗?
我的问题是update_attribute是否也绕过了之前的保存或只是验证.
另外,将散列传递给update_attributes的正确语法是什么...查看我顶部的示例.