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_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
|