Module: PaperTrailAudit::Model::ClassMethods

Defined in:
lib/paper_trail-audit.rb

Instance Method Summary collapse

Instance Method Details

#paper_trail_audit_for(*params) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/paper_trail-audit.rb', line 40

def paper_trail_audit_for(*params)
  params = params.flatten
  params.each do |param|
    if(self.column_names.include?(param.to_s))
      #Define a method which returns a list of audit change events
      define_method param.to_s+"_changes" do
        self.calculate_audit_for(param)
      end
    else
      reflection = self.reflect_on_all_associations(:belongs_to).select{|e| e.name == param}.first
      if(reflection)
        define_method param.to_s+"_changes" do
          self.calculate_audit_for(reflection.foreign_key).each do |o|
            o.old_value = reflection.klass.find(o.old_value) if o.old_value
            o.new_value = reflection.klass.find(o.new_value) if o.new_value
          end
        end
      else
        raise "Property \"#{param}\" does not exist on object #{self}"
      end
    end
  end
end