module Audited::Audit::ClassMethods
def as_user(user, &block)
by +user+. This method is hopefully threadsafe, making it ideal
All audits made during the block called will be recorded as made
def as_user(user, &block) Thread.current[:audited_user] = user yieldval = yield Thread.current[:audited_user] = nil yieldval end
def assign_revision_attributes(record, attributes)
- Private: -
def assign_revision_attributes(record, attributes) attributes.each do |attr, val| record = record.dup if record.frozen? if record.respond_to?("#{attr}=") record.attributes.has_key?(attr.to_s) ? record[attr] = val : record.send("#{attr}=", val) end end record end
def audited_classes
def audited_classes audited_class_names.map(&:constantize) end
def reconstruct_attributes(audits)
- Private: -
def reconstruct_attributes(audits) attributes = {} result = audits.collect do |audit| attributes.merge!(audit.new_attributes).merge!(:version => audit.version) yield attributes if block_given? end block_given? ? result : attributes end
def setup_audit
def setup_audit belongs_to :auditable, :polymorphic => true belongs_to :user, :polymorphic => true belongs_to :associated, :polymorphic => true before_create :set_version_number, :set_audit_user cattr_accessor :audited_class_names self.audited_class_names = Set.new attr_accessible :action, :audited_changes, :comment, :associated end