Ruby on rails 使用paper_trail gem时,如何跳过零和空白之间的更改?

Ruby on rails 使用paper_trail gem时,如何跳过零和空白之间的更改?,ruby-on-rails,ruby,activerecord,paper-trail-gem,Ruby On Rails,Ruby,Activerecord,Paper Trail Gem,TL;DR:如何跳过纸上记录的nil和blank之间的更改 我用来记录几个ActiveRecord对象中的数据更改。从客户的角度来看,有些更改是无用的,因此我需要忽略nil和blank(空字符串)之间的所有更改 paper\u trail似乎没有这样的选项。您可以使用:skip选项跳过某些字段。您是否可以传入一个“决定”有条件地跳过更改的过程?您可以添加一个过程来定义是否应保存新版本,代码应为: class ExampleModel < ActiveRecord::Base has_p

TL;DR:如何跳过纸上记录的
nil
blank
之间的更改

我用来记录几个
ActiveRecord
对象中的数据更改。从客户的角度来看,有些更改是无用的,因此我需要忽略
nil
blank
(空字符串)之间的所有更改


paper\u trail
似乎没有这样的选项。您可以使用
:skip
选项跳过某些字段。您是否可以传入一个“决定”有条件地跳过更改的过程?

您可以添加一个过程来定义是否应保存新版本,代码应为:

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

顺便说一下
:除非也支持
!这适用于PaperTrail>=4.0

谢谢您的变体!这是可行的,但这样我就可以列出我所有论文跟踪模型中的所有字段,或者使用self.columns或其他什么。我可以在其中有一个模块和一个方法,它可以接受列的数组——这还不错!我将对此进行投票,但还没有被接受的答案。