2016-08-15 25 views
3

TL; DR:一個人怎麼可以跳過nil和paper_trail blank之間的變化?用paper_trail創業板如何跳過零和空白之間的變化?

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

paper_trail似乎並不具有這樣的選項。您可以使用:skip選項跳過某些字段。你能否通過一個可以「決定」跳過有條件變更的Proc?

回答

2

你可以添加一個進程來定義一個新的版本應該被保存與否,代碼應該是:

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

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

+0

謝謝你的變種!這種方法很有用,但這樣我可以列出所有paper_trail模型中的所有字段,或者使用self.columns或其他東西。我可以有一個模塊和一個方法,它會接受列的數組雖然 - 不錯!我打算對此表示讚賞,但不會將其標記爲公認的答案。 –