为了账号安全,请及时绑定邮箱和手机立即绑定

Rails:update_attribute与update_attributes

Rails:update_attribute与update_attributes

qq_遁去的一_1 2019-12-09 09:36:26
Object.update_attribute(:only_one_field, "Some Value")Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")两者都将更新对象,而无需显式通知AR更新。Rails API说:用于update_attribute更新单个属性并保存记录,而无需执行正常的验证过程。这对于现有记录上的布尔标志特别有用。混入验证模块时,Base中的常规update_attribute方法将替换为该方法,默认情况下为该方法。用于update_attributes从传入的哈希中更新所有属性并保存记录。如果对象无效,则保存将失败并返回false。因此,如果我不想验证对象,则应使用update_attribute。如果我在before_save上进行了更新,将会导致stackoverflow吗?我的问题是update_attribute是否也绕过了之前的保存或只是验证。另外,将哈希传递给update_attributes的正确语法是什么...在顶部查看我的示例。
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

update_attribute


此方法无需调用基于模型的验证即可更新对象的单个属性。


obj = Model.find_by_id(params[:id])

obj.update_attribute :language, “java”

update_attributes


该方法更新单个对象的多个属性,并通过基于模型的验证。


attributes = {:name => “BalaChandar”, :age => 23}

obj = Model.find_by_id(params[:id])

obj.update_attributes(attributes)

希望这个答案能弄清楚什么时候使用主动记录的方法。


查看完整回答
反对 回复 2019-12-09
?
繁华开满天机

TA贡献1816条经验 获得超4个赞

同样值得注意的是,使用时update_attribute,要更新的所需属性不需要白名单来attr_accessible进行更新,这与update_attributes仅分配attr_accessible指定属性的批量分配方法相反。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 839 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信