如何仅在PaperTrail的create事件中捕获自定义元数据,其余事件正常工作
解决PaperTrail仅在create事件添加自定义元数据的问题
你需要实现的是仅给PaperTrail的create事件附加自定义元数据,同时让update和destroy事件保持正常追踪,之前的两次尝试都存在问题:
- 尝试1仅指定
:create事件,导致update和destroy操作完全不被PaperTrail追踪 - 尝试2两次调用
has_paper_trail,第二次配置直接覆盖了第一次,最终create事件的自定义元数据失效
给你一个可行的实现方案,直接在模型中编写以下代码:
# 先全局启用PaperTrail对所有CRUD事件的追踪 has_paper_trail # 仅在create事件触发前添加自定义元数据 before_create do paper_trail_add_metadata(object: "custom data") end
这个方案的逻辑很直接:先让PaperTrail默认追踪所有操作,再通过before_create回调,专门在创建记录的时机给PaperTrail追加自定义元数据。update和destroy事件因为没有额外的元数据设置,会保持PaperTrail的默认追踪行为,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者Harish Kumar
相关产品推荐
相关产品推荐

