![](/img/trans.png)
[英]paper_trail gem saving versions with object_changes nil
[英]With paper_trail gem how to skip changes between nil and blank?
TL;DR:如何在 paper_trail 中跳過nil
和blank
之間的變化?
我使用https://github.com/airblade/paper_trail來記錄幾個ActiveRecord
對象中的數據更改。 從我的客戶的角度來看,有些更改是無用的,因此我需要忽略nil
和blank
(空字符串)之間的所有更改。
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.