我有这样的事情:
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=
方法来做我自己的存储,还是有更好的方法?
答案 0 :(得分:0)
你可以这样做:
class TagMember < ActiveRecord::Base
after_save { |t| t.post.save }
# ^^^^
belongs_to :tag
belongs_to :image
belongs_to :post
# ^^^^
end