跟踪谁在Rails中做了什么?

时间:2009-06-29 01:16:20

标签: ruby-on-rails ruby

跟踪谁在中型Rails应用程序中做了什么的最佳实践方法是什么?拦截所有数据库读/写并将其存储在另一个表中?

4 个答案:

答案 0 :(得分:7)

您可以非常简单地调整acts_as_versioned以记录有关哪个用户执行操作的信息。我建议查看该插件,因为版本控制很少是一个坏主意。

答案 1 :(得分:2)

您可以对多个模型的create / update / delete等回调使用Observers,并将数据保存到另一个表/模型,但如果您想拥有类似wiki的网站,则可以选择acs_as_versioned。

答案 2 :(得分:1)

如果您想“自己动手”解决方案,可以在插入/更新/删除时实现数据库触发器,以更新单独的表。否则,有几个商业支持的数据审计应用程序可以购买和配置,以便在数据库级别为您跟踪和报告这些活动。

答案 3 :(得分:1)

您应该尝试使用acts_as_audited

之类的插件,而不是重新实现
  

acts_as_audited是一个ActiveRecord扩展,用于在审核表中记录模型的所有更改。

PaperTrail

  

PaperTrail可让您跟踪模型数据的变化。它适用于审计或版本控制。您可以看到模型如何查看其生命周期中的任何阶段,将其恢复为任何版本,甚至在销毁之后取消删除它。

无论哪种方式满足您的需求。