使用Rails和ActiveRecord维护记录编辑历史记录的最佳方式

问题描述:

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

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

我的猜测是,你会使用ActiveRecord回调更新或删除,而不是更新/删除记录,你会创建一个新的和有某种标识符来保持相同的“记录”相关联,也许一个字段来区分哪个记录是最新的,以及版本字段。

我依稀记得看到一些插件,但我似乎无法在moment.r

找到他们(有没有这个词,我不知道吗?)

acts_as_audited胜手。你甚至可以使用acts_as_versioned。 plugin-page解释了一切。浏览页面上的帖子下方的讨论评论。开发者发布了问题,并得到了作者和其他人的积极回应。

我在很多应用程序中使用过这个插件,我觉得它非常有用。强烈推荐。

这里是从插件页面预览:

acts_as_audited是活动记录 插件,记录在审计表中的所有修改 您的模型。它 使用多态关联 存储您希望 审计的任何 模型对象的审计记录。审计日志存储更改已打开的 模型, “操作”(创建,更新,销毁),更改的 序列化哈希以及执行 操作的用户(可选)。

+0

啊是的。审计。我知道有一个词。我只是记不住它。谢谢。 – srboisvert 2009-01-28 13:52:01

+0

:)欢迎。该插件非常棒。使用起来非常简单,而且完全符合审计应该具备的内容。生成报告时非常方便。 – Chirantan 2009-01-28 14:03:04

acts_as_versioned应该做的你在找什么 - http://wiki.rubyonrails.org/rails/pages/ActsAsVersioned

+2

错误的链接,请参阅https://github.com/technoweenie/acts_as_versioned – whitehat101 2012-05-04 18:36:49

这里的答案很好,但需要一些更新。

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在这方面有更清晰的例子。