如何解决rails 3:write_attribute和update_attribute之间的区别
|| 直到今天我才知道write_attribute ... 看起来好像update_attribute,尽管未调用验证仍在调用:before_save回调,而write_attribute没有。 这两种方法之间有区别吗?解决方法
“ 0”实际上是对数据库的物理调用。您将完全执行
UPDATE
语句。它就像update_attributes
,但仅用于单个列。
write_attribute
为基于AR的列写入要分配给模型的属性。如果要覆盖基于数据库的属性。
def first_name=(val)
write_attribute :first_name,val
end
# some_model.first_name => \'whatever val is\'
def first_name=(val)
@first_name = val
end
# some_model.first_name => nil
我没有广泛研究“ 3”,但是我收集的基于Activerecord的模型处理对基于db的列的分配与运行mill访问器略有不同。
, 如果要覆盖方法的默认访问器,请使用“ 3”。它实质上是is7ѭ的语法糖。
在“覆盖默认访问器”标题下查看ActiveRecord :: Base文档。
如果您尝试使用update_attribute
重写文档中的示例,我想它最终将陷入循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。