将Rails 3与vestal_versions gem一起使用并具有以下情况:
class Post < ActiveRecord::Base
versioned
has_many :comments
(...)
end
class Comment < ActiveRecord::Base
belongs_to :post
(...)
end
Post模型的版本控制完美无瑕。我想要的是,一旦相关的评论模型被创建/更新,相关的Post模型应该得到一个新版本。 (我不需要vestal_versions的恢复功能。)
实现这一目标的正确策略是什么?
答案 0 :(得分:1)
我使用papertrail gem
来执行此类任务,但这对您来说应该是一样的。
一个想法是更新评论的帖子,当评论将被创建 - 保存将在其帖子上调用,并将创建此帖子的新版本。像这样:
class Comment < ActiveRecord::Base
belongs_to :post
after_create :update_post
def update_post
self.post.save
end
end
再次,可能不是最佳方式,因为每次添加评论时都必须在帖子上调用save,这是一个性能问题。
更新基于kwirschau
评论
def update_post
self.post.send(:create_version)
end