如何防止 Paper Trail 通过触摸进行版本控制?

how do I prevent Paper Trail from versioning on touch?

在我的 Rails 6 应用程序的许多部分中,我与 touch: truebelongs_to 关联,这意味着父对象的 updated_at 值在子对象时得到更新已更新。

问题是我正在使用 Paper Trail gem 来跟踪数据的变化,但我不希望以这种方式简单地“接触”对象时的版本记录。

我试过在 updated_at 字段上使用 ignore 选项,如下所示:

has_paper_trail ignore: [:updated_at]

这导致在我这样做时没有创建任何版本

my_object.update(updated_at: Time.current)

但是当我这样做时它仍然创建了一个版本

my_object.touch

Paper Trail 将“触摸”操作与其他更新分开处理。它可以触发任何或所有这些操作的版本控制:创建、销毁、更新、触摸。

使用 on 选项来指定触发不包括 'touch' 的版本的操作子集。像这样

has_paper_trail on: [:create, :destroy, :update]

在文档中,这在 2.a 部分进行了描述。 (Choosing Lifecycle Events To Monitor)