Audited::Auditor::ClassMethods

Public Instance Methods

audited(options = {}) click to toggle source

Configuration options

  • only - Only audit the given attributes

  • except - Excludes fields from being saved in the audit log. By default, 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
      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_accessible before calling audited, it will automatically default to false. You only need to explicitly set this if you are calling attr_accessible after.

  • require_comment - Ensures that audit_comment is supplied before any create, update or destroy operation.

    class User < ActiveRecord::Base
      audited :protect => false
      attr_accessible :name
    end
# File lib/audited/auditor.rb, line 46
def audited(options = {})
  # don't allow multiple calls
  return if self.included_modules.include?(Audited::Auditor::AuditedInstanceMethods)

  class_attribute :non_audited_columns,   :instance_writer => false
  class_attribute :auditing_enabled,      :instance_writer => false
  class_attribute :audit_associated_with, :instance_writer => false

  if options[:only]
    except = self.column_names - options[:only].flatten.map(&:to_s)
  else
    except = default_ignored_attributes + Audited.ignored_attributes
    except |= Array(options[:except]).collect(&:to_s) if options[:except]
  end
  self.non_audited_columns = except
  self.audit_associated_with = options[:associated_with]

  if options[:comment_required]
    validates_presence_of :audit_comment, :if => :auditing_enabled
    before_destroy :require_comment
  end

  attr_accessor :audit_comment
  unless options[:allow_mass_assignment]
    attr_accessible :audit_comment
  end

  has_many :audits, :as => :auditable, :class_name => Audited.audit_class.name
  Audited.audit_class.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))
  before_destroy :audit_destroy if !options[:on] || (options[:on] && options[:on].include?(:destroy))

  # Define and set an after_audit callback. This might be useful if you want
  # to notify a party after the audit has been created.
  define_callbacks :audit
  set_callback :audit, :after, :after_audit, :if => lambda { self.respond_to?(:after_audit) }

  attr_accessor :version

  extend Audited::Auditor::AuditedClassMethods
  include Audited::Auditor::AuditedInstanceMethods

  self.auditing_enabled = true
end
has_associated_audits() click to toggle source
# File lib/audited/auditor.rb, line 93
def has_associated_audits
  has_many :associated_audits, :as => :associated, :class_name => Audited.audit_class.name
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.