如何在 ActiveRecord 回调中跳过 PaperTrail 版本

How To Skip PaperTrail Version on ActiveRecord Callback

目前,我已经使用 PaperTrail 实现了一个 Rails 数据审计应用程序。 我为每个 createupdatedestroy 操作添加了一个新版本。

问题是,我的模型中有一个 after_create 回调,我希望 PaperTrail 在其中忽略它。

目前,当我创建一条新记录时,会创建两个版本。一个是创建事件,一个是我回调的更新事件。

我想要的是这里只创建一个版本,创建事件的一个版本。

具体来说,我的回调只是在我的记录中添加一个 slug,一个别名,我不想在其中向用户显示这种更改。

不知道有没有办法做到。

如有任何建议,我们将不胜感激。

谢谢,

我想你可以利用 without_versioning

Executes the given method or block without creating a new version

user.without_versioning { |obj| obj.update_attributes(attribute: 'new_value') }

without_versioning 已在 v10 中删除,如前所述 here

改用:

PaperTrail.request(enabled: false) do
  # no versions created
end

或仅针对特定型号:

PaperTrail.request.disable_model(Banana)
# changes to Banana model do not create versions,
# but eg. changes to Kiwi model do.
PaperTrail.request.enable_model(Banana)