【问题标题】:How force papertrail to store an object with only meta data如何强制 papertrail 存储仅包含元数据的对象
【发布时间】:2024-01-15 07:03:01
【问题描述】:

我查看了how to store meta data for a paper trail versioned object,看起来很简单。问题是我希望能够在不对对象进行任何实际更改的情况下存储该元数据。调用 .save 或 .touch 或仅使用 .update_attributes!(:updated_at => Time.now) 不会创建新版本。

有谁知道强制纸质记录存储没有任何更改但具有元数据的版本的方法?

【问题讨论】:

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


    【解决方案1】:

    这是 Papertrail 中的一个已知问题:

    https://github.com/airblade/paper_trail/issues/329

    来自问题:

    所以 touch 不会创建版本,因为它不会像正常更新那样触发 ActiveRecord::Callbacks,而 PaperTrail 会从 before_update 回调中生成更新版本。

    目前似乎没有办法将 Paper Trail 配置为自动执行此操作,但您可以在实例上显式调用 .touch_with_version 方法,该方法将创建一个仅包含更新时间戳的新版本

    https://github.com/airblade/paper_trail/blob/cd9233ba0be53c53ceb96be3cd23ece8254f4c5a/lib/paper_trail/has_paper_trail.rb#L263

    【讨论】:

    • 这看起来很有希望,但是当我尝试它时,似乎 .touch_with_version 不会创建新版本,除非跟踪属性发生更改。所以对于“我想保存一个版本,但只有元数据发生了变化”的问题并没有帮助。
    最近更新 更多