1

使用带有 vestal_versions gem 的 Rails 3 并有这种情况:

class Post < ActiveRecord::Base
  versioned
  has_many :comments
  (...)
end

class Comment < ActiveRecord::Base
  belongs_to :post
  (...)
end

Post 模型的版本控制完美无缺。我想要的是,一旦相关的 Comment 模型被创建/更新,相关的 Post 模型应该得到一个新版本。(我不需要vestal_versions的恢复功能。)

实现这一目标的正确策略是什么?

4

1 回答 1

1

我用于papertrail gem这种类型的任务,但这对你来说应该是一样的。一个想法是更新评论的帖子,何时创建评论 - 将在其帖子上调用 save 并创建该帖子的新版本。像这样的东西:

class Comment < ActiveRecord::Base
  belongs_to :post
  after_create :update_post

  def update_post
    self.post.save
  end
end

同样,可能不是最好的方法,因为每次添加评论时都必须在发布时调用保存,这是一个性能问题。

根据kwirschau评论更新

  def update_post
    self.post.send(:create_version)
  end
于 2013-09-16T07:19:51.687 回答