Module: Mongoid::Audit::Tracker
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/mongoid-audit/tracker.rb
Instance Method Summary collapse
- #affected ⇒ Object
- #redo!(modifier) ⇒ Object
- #redo_attr(modifier) ⇒ Object
- #trackable ⇒ Object
- #trackable_parent ⇒ Object
- #trackable_parents ⇒ Object
- #trackable_root ⇒ Object
- #undo!(modifier) ⇒ Object
- #undo_attr(modifier) ⇒ Object
Instance Method Details
#affected ⇒ Object
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.[:modifier_field] redo_hash[modifier_field] = modifier redo_hash end |
#trackable ⇒ Object
83 84 85 |
# File 'lib/mongoid-audit/tracker.rb', line 83 def trackable @trackable ||= trackable_parents_and_trackable.last end |
#trackable_parent ⇒ Object
91 92 93 |
# File 'lib/mongoid-audit/tracker.rb', line 91 def trackable_parent @trackable_parent ||= trackable_parents_and_trackable[-2] end |
#trackable_parents ⇒ Object
87 88 89 |
# File 'lib/mongoid-audit/tracker.rb', line 87 def trackable_parents @trackable_parents ||= trackable_parents_and_trackable[0, -1] end |
#trackable_root ⇒ Object
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.[:modifier_field] undo_hash[modifier_field] = modifier undo_hash end |