1

Rails 3 を vestal_versions gem で使用すると、次のような状況になります。

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はこのタイプのタスクに使用しましたが、これはあなたにも同じように機能するはずです。アイデアは、コメントが作成されるときにコメントの投稿を更新することです-保存がその投稿で呼び出され、この投稿の新しいバージョンが作成されます。このようなもの:

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 に答える