【问题标题】:how do I prevent Paper Trail from versioning on touch?如何防止 Paper Trail 在触摸时进行版本控制?
【发布时间】:2021-06-15 01:43:47
【问题描述】:

在我的 Rails 6 应用程序的许多部分中,belongs_totouch: true 关联,这意味着父对象的 updated_at 值会在子对象更新时更新。

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

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

has_paper_trail ignore: [:updated_at]

当我这样做时不会创建任何版本

my_object.update(updated_at: Time.current)

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

my_object.touch

【问题讨论】:

    标签: ruby-on-rails paper-trail-gem


    【解决方案1】:

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

    使用on 选项可指定触发不包括“触摸”的版本的操作子集。像这样

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 1970-01-01
      • 1970-01-01
      • 2014-10-29
      相关资源
      最近更新 更多