module Mongoid::ExtendedDirtyTrackable
Constants
- VERSION
Attributes
associated_changes[W]
embedded_changes[W]
Public Instance Methods
associated_changes()
click to toggle source
# File lib/mongoid/extended_dirty_trackable.rb, line 12 def associated_changes @associated_changes = begin self.associations.keys.inject({}) do |memo, association| _changes = msg_relative(association) memo.merge!(_changes) memo end end end
changed?()
click to toggle source
Calls superclass method
# File lib/mongoid/extended_dirty_trackable.rb, line 51 def changed? super || self._children.any?(&:changed?) end
changes()
click to toggle source
Calls superclass method
# File lib/mongoid/extended_dirty_trackable.rb, line 45 def changes from_super = super from_super.merge!(associated_changes) from_super.merge!(embedded_changes) end
embedded_changes()
click to toggle source
# File lib/mongoid/extended_dirty_trackable.rb, line 36 def embedded_changes @embedded_changes = begin self.collect_children.inject({}) do |memo, child| memo.merge!(child.changes) if child.changed? memo end end end
msg_relative(relationship)
click to toggle source
# File lib/mongoid/extended_dirty_trackable.rb, line 22 def msg_relative(relationship) relative = self.send(relationship) if relative && !relative.is_a?(Array) && relative.changed? _changes = relative.changes elsif relative && relative.is_a?(Array) && relative.any?(&:changed) _changes = relative.inject({}) do |memo, obj| memo.merge!(obj.changes) if obj.changed? end end _changes || {} end