diff --git a/lib/acts_as_audited.rb b/lib/acts_as_audited.rb index a8eff3c3..a1b137da 100644 --- a/lib/acts_as_audited.rb +++ b/lib/acts_as_audited.rb @@ -26,6 +26,14 @@ module ActsAsAudited VERSION = '2.0.0.rc7' + class << self + attr_accessor_with_default :ignored_attributes, ['lock_version', + 'created_at', + 'updated_at', + 'created_on', + 'updated_on'] + end + mattr_accessor :current_user_method # The method to be called to return the current user for logging in the audits. @@current_user_method = :current_user diff --git a/lib/acts_as_audited/auditor.rb b/lib/acts_as_audited/auditor.rb index 2f227df1..cabfefdc 100644 --- a/lib/acts_as_audited/auditor.rb +++ b/lib/acts_as_audited/auditor.rb @@ -59,8 +59,7 @@ def acts_as_audited(options = {}) if options[:only] except = self.column_names - options[:only].flatten.map(&:to_s) else - except = [self.primary_key, inheritance_column, 'lock_version', - 'created_at', 'updated_at', 'created_on', 'updated_on'] + except = [self.primary_key, inheritance_column] + ActsAsAudited.ignored_attributes except |= Array(options[:except]).collect(&:to_s) if options[:except] end write_inheritable_attribute :non_audited_columns, except diff --git a/spec/acts_as_audited_spec.rb b/spec/acts_as_audited_spec.rb index bd43c935..e832dde9 100644 --- a/spec/acts_as_audited_spec.rb +++ b/spec/acts_as_audited_spec.rb @@ -17,6 +17,15 @@ end end + it "should be configurable which attributes are not audited" do + ActsAsAudited.ignored_attributes = ['delta', 'top_secret', 'created_at'] + class Secret < ActiveRecord::Base + acts_as_audited + end + + Secret.non_audited_columns.should include('delta', 'top_secret', 'created_at') + end + it "should not save non-audited columns" do create_user.audits.first.audited_changes.keys.any? { |col| ['created_at', 'updated_at', 'password'].include?( col ) }.should be_false end