有没有办法获得ActiveRecord属性的原始值(=从数据库加载的值)?
在观察者中我想要这样的东西
before_save object do_something_with object.original_name end
任务是在更新时从哈希表中删除对象(事实上,将其移动到表中的另一个键) .
将 _was 附加到您的属性将为您提供之前的值 .
_was
ActiveRecord的attributes_before_type_cast方法在进行类型转换和反序列化之前返回属性的哈希值 .
看看rails文档
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
Model.attribute_was返回上一个值:D
追踪 _was 在rails 5.1中已弃用,现在您应该追加 _before_last_save
_before_last_save
就像是:
before_save object do_something_with object.name_before_last_save end
将在上次保存数据库之前返回名称值(用于保存和创建)
根据文档, _was 和 _before_last_save 之间的区别如下:
_was 来源from docs
def attribute_was(attr) attribute_changed?(attr) ? changed_attributes[attr] : __send__(attr) end
_before_last_save 来源from docs
def attribute_before_last_save(attr_name) mutations_before_last_save.original_value(attr_name) end
你可以看到一个更好的例子here
4 回答
将
_was
附加到您的属性将为您提供之前的值 .ActiveRecord的attributes_before_type_cast方法在进行类型转换和反序列化之前返回属性的哈希值 .
看看rails文档
http://api.rubyonrails.org/classes/ActiveModel/Dirty.html
Model.attribute_was返回上一个值:D
对于轨道5.1
追踪
_was
在rails 5.1中已弃用,现在您应该追加_before_last_save
就像是:
将在上次保存数据库之前返回名称值(用于保存和创建)
根据文档,
_was
和_before_last_save
之间的区别如下:_was 来源from docs
_before_last_save 来源from docs
你可以看到一个更好的例子here