1.9.3p448 :014 > l.reload
=> #<Lesson _id: 527246641d41c81d14000006, title: "ola">
1.9.3p448 :015 > l.changed?
=> false
1.9.3p448 :016 > l.changes
=> {}
1.9.3p448 :017 > l.previous_changes
=> {"title"=>["olaaaaa", "ola"]}
1.9.3p448 :018 > l.changed?
=> false
1.9.3p448 :019 > l.update_attributes(title: "olaaa")
=> true
1.9.3p448 :020 > l.changes
=> {}
1.9.3p448 :021 > l.changed?
=> false
我已经更新了属性
"title"
,但是当我尝试l.changed?
时,我得到了false
。
我知道
new_record?
方法,可以知道一个对象是否是一个新对象,但我需要知道一个对象是否已更新。
我想知道,如何知道对象是否已使用 mongoid 3.x 更新?
当您重新加载、保存、更新时,更改将移至 previous_changes。您还可以访问回调的更改,否则您将不得不使用
previous_changes
。
这是设计使然,与 ActiveRecord 保持一致。
previous_changes 记录在此处以及所有其他属性更改观察内容。
.changed?
表示文档是否更改.children_changed?
指示嵌入文档之一是否已更改.changed_attributes
提供更改属性的哈希还有操作和删除更改的方法