检查对象是否已更新 mongoid 3.x

问题描述 投票:0回答:1
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 更新?

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 mongoid mongoid3
1个回答
2
投票

当您重新加载、保存、更新时,更改将移至 previous_changes。您还可以访问回调的更改,否则您将不得不使用

previous_changes
。 这是设计使然,与 ActiveRecord 保持一致。

previous_changes 记录在此处以及所有其他属性更改观察内容。

  • .changed?
    表示文档是否更改
  • .children_changed?
    指示嵌入文档之一是否已更改
  • .changed_attributes
    提供更改属性的哈希

还有操作和删除更改的方法

© www.soinside.com 2019 - 2024. All rights reserved.