Module: Mongoid::Audit::Tracker

Extended by:
ActiveSupport::Concern
Defined in:
lib/mongoid-audit/tracker.rb

Instance Method Summary collapse

Instance Method Details

#affectedObject



95
96
97
98
# File 'lib/mongoid-audit/tracker.rb', line 95

def affected
  @affected ||= (modified.keys | original.keys).inject({}){ |h,k| h[k] =
    trackable ? trackable.attributes[k] : modified[k]; h}
end

#redo!(modifier) ⇒ Object



53
54
55
56
57
58
59
60
61
# File 'lib/mongoid-audit/tracker.rb', line 53

def redo!(modifier)
  if action.to_sym == :destroy
    re_destroy
  elsif action.to_sym == :create
    re_create
  else
    trackable.update_attributes!(redo_attr(modifier))
  end
end

#redo_attr(modifier) ⇒ Object



71
72
73
74
75
76
77
# File 'lib/mongoid-audit/tracker.rb', line 71

def redo_attr(modifier)
  redo_hash = affected.easy_unmerge(original)
  redo_hash.easy_merge!(modified)
  modifier_field = trackable.history_trackable_options[:modifier_field]
  redo_hash[modifier_field] = modifier
  redo_hash
end

#trackableObject



83
84
85
# File 'lib/mongoid-audit/tracker.rb', line 83

def trackable
  @trackable ||= trackable_parents_and_trackable.last
end

#trackable_parentObject



91
92
93
# File 'lib/mongoid-audit/tracker.rb', line 91

def trackable_parent
  @trackable_parent ||= trackable_parents_and_trackable[-2]
end

#trackable_parentsObject



87
88
89
# File 'lib/mongoid-audit/tracker.rb', line 87

def trackable_parents
  @trackable_parents ||= trackable_parents_and_trackable[0, -1]
end

#trackable_rootObject



79
80
81
# File 'lib/mongoid-audit/tracker.rb', line 79

def trackable_root
  @trackable_root ||= trackable_parents_and_trackable.first
end

#undo!(modifier) ⇒ Object



43
44
45
46
47
48
49
50
51
# File 'lib/mongoid-audit/tracker.rb', line 43

def undo!(modifier)
  if action.to_sym == :destroy
    re_create
  elsif action.to_sym == :create
    re_destroy
  else
    trackable.update_attributes!(undo_attr(modifier))
  end
end

#undo_attr(modifier) ⇒ Object



63
64
65
66
67
68
69
# File 'lib/mongoid-audit/tracker.rb', line 63

def undo_attr(modifier)
  undo_hash = affected.easy_unmerge(modified)
  undo_hash.easy_merge!(original)
  modifier_field = trackable.history_trackable_options[:modifier_field]
  undo_hash[modifier_field] = modifier
  undo_hash
end