使用rails观察器跟踪字段更改

jla*_*rry 10 ruby-on-rails observer-pattern

我试图找出一种方法来记录有人更新对象时的更改.现在我的观察者将存储所有当前值,但我对如何确定哪些字段已更改以及如何将它们存储在我的feed db中感到迷茫.

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

模型

# Table name: milestones
#
#  id            :integer         not null, primary key
#  name          :string(255)
#  project_id    :integer
#  target_date   :datetime
Run Code Online (Sandbox Code Playgroud)

观察者跟踪变化

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
Run Code Online (Sandbox Code Playgroud)

apn*_*ing 12

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

object.changes
Run Code Online (Sandbox Code Playgroud)

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