在Rails中维护记录编辑历史记录的最佳/最干净/最简单的方法是什么?
我正在寻找日志记录 - 谁进行了编辑,何时以及能够回滚到早期版本的记录。
我的猜测是你会在更新或删除时使用ActiveRecord回调,而不是更新/删除记录,你会创建一个新的记录,并有一些标识符来保持相同的“记录”关联,也许是一个字段来区分哪个record是current和version字段。
我模糊地回忆起看到一些插件,但我现在似乎无法找到它们。
(我不知道这个术语吗?)
答案 0 :(得分:10)
acts_as_audited获胜。你甚至可以使用acts_as_versioned。 plugin-page解释了一切。浏览页面上帖子下方的讨论评论。开发人员已发布问题并获得了作者和其他人的积极回应。
我在很多应用程序中使用过这个插件,我发现它非常有用。强烈推荐。
以下是插件页面的预览:
acts_as_audited是一个活动记录 记录所有修改的插件 您的模型在审核表中。它 使用多态关联 存储任何一个的审计记录 您希望拥有的模型对象 审计。审计日志存储 变化的模型, “行动”(创造,更新,破坏),a 序列化哈希的变化,和 可选地执行该操作的用户 动作。
答案 1 :(得分:5)
这里的答案很好,但需要一些更新。
acts_as_audited已重命名为已审核,请参阅https://github.com/collectiveidea/audited。我用它取得了巨大的成功。
paper_trail也可能是有意义的。 http://railscasts.com/episodes/255-undo-with-paper-trail恢复版本在audited / acts_as_audited中有点笨拙并没有记录。 paper_trail在这方面有更清晰的例子。
答案 2 :(得分:3)
acts_as_versioned应该做你想要的 - http://wiki.rubyonrails.org/rails/pages/ActsAsVersioned