我正在使用paper_trail进行审计跟踪。除了创建,更新和删除事件,我想跟踪一些自定义事件,如视图(记录),发送(电子邮件)等。我们如何在审核模型时引入此类自定义事件?
答案 0 :(得分:5)
我发现了一个在paper_trail托管版本中添加自定义事件的调整。这是调整
Version.create(item_type: "Campaign", item_id: campaign.id, event: "Sent")
可能这不是正确的解决方案,但它帮助我实现了目标。我会更多地探索paper_trail以找到明显的解决方案。
请继续发布您的建议。
谢谢, 阿米特帕特尔
答案 1 :(得分:1)
请参阅simple hit counter for page views in rails作为问题第一部分的答案。至于跟踪已发送的邮件,您可能需要使用Observer pattern。
在任何情况下,所有这些事件都在paper_trail
域之外。虽然paper_trail
只是在数据更改期间创建模型的版本,但您需要观察自定义事件并向DB写入有关该事件的所有必要信息。
答案 2 :(得分:0)
遵循纸张跟踪流程,并将纸张跟踪挂钩到触摸事件:
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)