我可以使用审计gem进行审计,而不是存储更改

时间:2014-11-11 00:58:29

标签: ruby-on-rails

我已经开始在Rails 3应用程序中使用audited gem。

它工作正常,但我有一个问题,我有一个大文本列的表。 我希望将此列中的数据保存在审核表的“audited_changes”中,因为该表会大小爆炸。

我知道我可以使用以下内容来禁止对该列进行审核:except =>:my_big_text_column

总而言之,我想知道用户已编辑了文字,但我希望每次都保存该文本的副本。如果我禁止对该列进行审核,那么如果他们编辑该列,我将完全没有审核。

1 个答案:

答案 0 :(得分:5)

我找到了一个适用于我想要审核的答案。 我刚刚创建了自己的Audited :: Adapters :: ActiveRecord :: Audit版本并将其放在初始化器中。

我添加了一个before_save方法来操作audited_changes哈希。 我只是改变了哈希,只是说'#34;改变了#34;对于指定的大文本列。 似乎做我需要的。

 module Audited
  module Adapters
    module ActiveRecord
      class Audit < ::ActiveRecord::Base
        before_save :remove_text_fields

        def remove_text_fields
          if self.audited_changes.include?("case_notes")
            self.audited_changes["case_notes"]="changed"
          end
        end

      end
    end
  end
end