Ruby on rails Rails 3 vestal_版本:在子模型发生更改时在父模型上创建新版本
将Rails 3与vestal_版本gem一起使用,并出现以下情况:Ruby on rails Rails 3 vestal_版本:在子模型发生更改时在父模型上创建新版本,ruby-on-rails,ruby,model,associations,vestal-versions,Ruby On Rails,Ruby,Model,Associations,Vestal Versions,将Rails 3与vestal_版本gem一起使用,并出现以下情况: class Post < ActiveRecord::Base versioned has_many :comments (...) end class Comment < ActiveRecord::Base belongs_to :post (...) end class Post
class Post < ActiveRecord::Base
versioned
has_many :comments
(...)
end
class Comment < ActiveRecord::Base
belongs_to :post
(...)
end
class Post
Post模型的版本控制工作完美无瑕。我想要的是,一旦相关的评论模型被创建/更新,相关的Post模型应该得到一个新版本。(我不需要vestal_版本的修复功能。)
实现这一点的正确策略是什么?我使用了
papertrail gem
来完成这类任务,但这对您来说应该是一样的。
一个想法是在创建评论时更新评论的帖子——在其帖子上调用save,并创建该帖子的新版本。大概是这样的:
class Comment < ActiveRecord::Base
belongs_to :post
after_create :update_post
def update_post
self.post.save
end
end
我使用了
papertrail gem
来完成这类任务,但这对你来说应该是一样的。
一个想法是在创建评论时更新评论的帖子——在其帖子上调用save,并创建该帖子的新版本。大概是这样的:
class Comment < ActiveRecord::Base
belongs_to :post
after_create :update_post
def update_post
self.post.save
end
end
啊,好的。我想这种务实的方法应该可以做到这一点。谢谢仅针对日志:
self.post.send(:create_version)
使用vestal_版本(而不是self.post.save
)执行此操作。另见:啊,好的。我想这种务实的方法应该可以做到这一点。谢谢仅针对日志:self.post.send(:create_version)
使用vestal_版本(而不是self.post.save
)执行此操作。另见: