簡體   English   中英

使用 paper_trail gem 如何跳過零和空白之間的變化?

[英]With paper_trail gem how to skip changes between nil and blank?

TL;DR:如何在 paper_trail 中跳過nilblank之間的變化?

我使用https://github.com/airblade/paper_trail來記錄幾個ActiveRecord對象中的數據更改。 從我的客戶的角度來看,有些更改是無用的,因此我需要忽略nilblank (空字符串)之間的所有更改。

paper_trail似乎沒有這樣的選擇。 您可以使用:skip選項跳過某些字段。 你能傳入一個“決定”有條件地跳過更改的 Proc 嗎?

您可以添加一個過程來定義一個新版本是否應該保存,代碼應該是:

class ExampleModel < ActiveRecord::Base
  has_paper_trail :if => Proc.new { |t| t.attr_1.present? && t.attr_2.present? }
end

順便說一句:unless也被支持! 這適用於 PaperTrail >= 4.0

我知道這已經很老了,但我最近遇到了這個問題,最后我用猴子修補它......

# config/initializers/paper_trail.rb

    module PaperTrail
      module Events
        class Base
          def notable_changes
            changes_in_latest_version.delete_if { |k, _v|
              !notably_changed.include?(k) or _v.all?{|v|v.blank?}
            }
          end
        end
      end
    end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM