8

我正在使用 paper_trail 进行审计跟踪。除了创建、更新和删除事件之外,我还想跟踪一些自定义事件,例如视图(记录)、发送(电子邮件)等。我们如何在审核模型时引入这些自定义事件?

4

3 回答 3

4

我发现了一个在 paper_trail managed 中添加自定义事件的调整Version

Version.create(item_type: "Campaign", item_id: campaign.id, event: "Sent")

也许这不是正确的解决方案,但它帮助我实现了目标。我想更多地探索 paper_trail 以找到更好的解决方案。

于 2012-03-26T05:33:46.903 回答
2

遵循纸迹流程,并将纸迹与您的触摸事件挂钩:

record.paper_trail_event = 'notified'
record.touch

如果您不想使用该挂钩,您可以:

record.versions.create!(event: 'notified')

第二种方法的主要问题是它不会应用任何 PaperTrail 范围参数,也不会应用您可能为该模型 PaperTrail 配置定义的任何其他动态字段。

您将需要手动设置这些。因为request.whodunnit它会像:

record.versions.create!(event: 'notified', whodunnit: current_user.id)
于 2020-11-28T14:33:07.243 回答
1

请参阅rails 中页面视图的简单命中计数器作为问题第一部分的答案。至于跟踪发送的邮件,您可能需要使用观察者模式

无论如何,所有这些事件都在paper_trail域之外。虽然paper_trail只是在数据更改期间创建模型的版本,但您需要观察自定义事件并将有关该事件的所有必要信息写入数据库。

于 2012-03-24T14:03:36.927 回答