7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/trackzor.rb', line 7
def trackzored(options = {})
class_inheritable_reader :trackzor_exempt_columns
class_inheritable_reader :trackzor_maintained_columns
class_inheritable_reader :trackzored_columns
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']
except |= Array(options[:except]).collect(&:to_s) if options[:except]
end
write_inheritable_attribute :trackzor_exempt_columns, except
the_trackzored_columns = []
the_trackzor_maintained_columns = []
(self.column_names - self.trackzor_exempt_columns).each do |column|
has_updated_by_col = self.column_names.include?("#{column}_updated_by")
has_updated_at_col = self.column_names.include?("#{column}_updated_at")
if has_updated_by_col || has_updated_at_col
the_trackzored_columns << column
if has_updated_by_col
belongs_to "#{column}_source".to_sym, :class_name => 'User', :foreign_key => "#{column}_updated_by"
the_trackzor_maintained_columns << "#{column}_updated_by"
end
if has_updated_at_col
the_trackzor_maintained_columns << "#{column}_updated_at"
end
end
end
write_inheritable_attribute :trackzored_columns, the_trackzored_columns
write_inheritable_attribute :trackzor_maintained_columns, the_trackzor_maintained_columns
if self.respond_to?(:non_audited_columns)
nac = self.non_audited_columns + the_trackzor_maintained_columns
write_inheritable_attribute :non_audited_columns, nac
end
validate :trackzor_assign_and_validate
include Trackzor::InstanceMethods
end
|