使用Rails和ActiveRecord维护记录的编辑历史记录的最佳方法是什么

时间:2009-01-28 13:15:15

标签: ruby-on-rails activerecord transactions

在Rails中维护记录编辑历史记录的最佳/最干净/最简单的方法是什么?

我正在寻找日志记录 - 谁进行了编辑,何时以及能够回滚到早期版本的记录。

我的猜测是你会在更新或删除时使用ActiveRecord回调,而不是更新/删除记录,你会创建一个新的记录,并有一些标识符来保持相同的“记录”关联,也许是一个字段来区分哪个record是current和version字段。

我模糊地回忆起看到一些插件,但我现在似乎无法找到它们。

(我不知道这个术语吗?)

3 个答案:

答案 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