Module: CollectiveIdea::Acts::Audited::ClassMethods

Defined in:
lib/acts_as_audited.rb

Instance Method Summary collapse

Instance Method Details

#acts_as_audited(options = {}) ⇒ Object

Configuration options

  • only - Only audit the given attributes

  • except - Excludes fields from being saved in the audit log. By default, acts_as_audited will audit all but these fields:

    [self.primary_key, inheritance_column, 'lock_version', 'created_at', 'updated_at']
    

    You can add to those by passing one or an array of fields to skip.

    class User < ActiveRecord::Base
      acts_as_audited :except => :password
    end
    
  • protect - If your model uses attr_protected, set this to false to prevent Rails from raising an error. If you declare attr_accessibe before calling acts_as_audited, it will automatically default to false. You only need to explicitly set this if you are calling attr_accessible after.

    class User < ActiveRecord::Base
      acts_as_audited :protect => false
      attr_accessible :name
    end
    


64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/acts_as_audited.rb', line 64

def acts_as_audited(options = {})
  # don't allow multiple calls
  return if self.included_modules.include?(CollectiveIdea::Acts::Audited::InstanceMethods)

  options = {:protect => accessible_attributes.nil?}.merge(options)

  class_inheritable_reader :non_audited_columns
  class_inheritable_reader :auditing_enabled
  
  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 |= Array(options[:except]).collect(&:to_s) if options[:except]
  end
  write_inheritable_attribute :non_audited_columns, except

  has_many :audits, :as => :auditable, :order => "#{Audit.quoted_table_name}.version"
  attr_protected :audit_ids if options[:protect]
  Audit.audited_class_names << self.to_s

  after_create  :audit_create if !options[:on] || (options[:on] && options[:on].include?(:create))
  before_update :audit_update if !options[:on] || (options[:on] && options[:on].include?(:update))
  after_destroy :audit_destroy if !options[:on] || (options[:on] && options[:on].include?(:destroy))

  attr_accessor :version

  extend CollectiveIdea::Acts::Audited::SingletonMethods
  include CollectiveIdea::Acts::Audited::InstanceMethods

  write_inheritable_attribute :auditing_enabled, true
end