获取ActiveRecord关联的更改

时间:2014-11-25 21:04:32

标签: ruby-on-rails ruby rails-activerecord

我有这样的事情:

class Post < ActiveRecord::Base
  has_many :tag_members
  has_many :tags, through: :tag_member
end

class Tag < ActiveRecord::Base
  has_many :tag_members
  has_many :posts, through: :tag_member
end

class TagMember < ActiveRecord::Base
  belongs_to :tag
  belongs_to :image
end

我想跟踪post对象的编辑。最简单的方法似乎是这样的:

class Post < ActiveRecord::Base
  before_update :save_edits
  def save_edits
     # Assuming save_edit takes in a hash and persists it somehow
     save_edit(self.changes)
  end
end

但是,通过我已经完成的测试,在Tag上向has_many association添加新的Post不会运行before_update回调,并且不会在返回的哈希中存储任何内容.changes

跟踪这些类型的编辑的最佳方法是什么?我应该简单地重载.tags=方法来做我自己的存储,还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

class TagMember < ActiveRecord::Base
  after_save { |t| t.post.save }
  # ^^^^

  belongs_to :tag
  belongs_to :image
  belongs_to :post
  # ^^^^
end