如何防止 Paper Trail 通过触摸进行版本控制?
how do I prevent Paper Trail from versioning on touch?
在我的 Rails 6 应用程序的许多部分中,我与 touch: true
有 belongs_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)
在我的 Rails 6 应用程序的许多部分中,我与 touch: true
有 belongs_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)