用rails观察者跟踪字段的变化



我正试图找出一种方法来记录更改,当有人更新一个对象。现在,我的观察者将存储所有的当前值,但我不知道如何确定哪些字段发生了变化,以及如何将它们存储在我的feeds db中。

为了简单起见,这里是一个示例模型和观察者。我的目标是跟踪哪个字段被更新并将其存储在我的Feed数据库中。如果需要,我愿意向我的数据库添加新字段。如果有任何问题请告诉我。

模型
# Table name: milestones
#
#  id            :integer         not null, primary key
#  name          :string(255)
#  project_id    :integer
#  target_date   :datetime

观察者跟踪变化

class MilestoneObserver < ActiveRecord::Observer
    def after_update(milestone)
        f = Feed.new(
          :action => milestone.name, 
          :project_id => milestone.project_id, 
          :updated_by_id => "Jordan")
        f.save
    end 
end

要知道哪些字段已更改,请执行:

object.changes

在这里看到很好的文章:http://ryandaigle.com/articles/2008/3/31/what-s-new-in-edge-rails-dirty-objects

最新更新