Module: Mongoid::RelationsDirtyTracking::ClassMethods
- Defined in:
- lib/mongoid/relations_dirty_tracking.rb
Instance Method Summary collapse
- #relations_dirty_tracking(options = {}) ⇒ Object
- #track_relation?(rel_name) ⇒ Boolean
- #tracked_relations ⇒ Object
Instance Method Details
#relations_dirty_tracking(options = {}) ⇒ Object
35 36 37 38 |
# File 'lib/mongoid/relations_dirty_tracking.rb', line 35 def relations_dirty_tracking( = {}) [:only] += [[:only] || []].flatten.map(&:to_s) [:except] += [[:except] || []].flatten.map(&:to_s) end |
#track_relation?(rel_name) ⇒ Boolean
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/mongoid/relations_dirty_tracking.rb', line 40 def track_relation?(rel_name) rel_name = rel_name.to_s = to_track = (![:only].blank? && [:only].include?(rel_name)) || ([:only].blank? && ![:except].include?(rel_name)) trackables = [Mongoid::Association::Embedded::EmbedsOne::Proxy, Mongoid::Association::Embedded::EmbedsMany::Proxy, Mongoid::Association::Referenced::HasOne::Proxy, Mongoid::Association::Referenced::HasMany::Proxy, Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy, Mongoid::Association::Referenced::BelongsTo::Proxy] to_track && trackables.include?(relations[rel_name].try(:relation)) end |
#tracked_relations ⇒ Object
56 57 58 |
# File 'lib/mongoid/relations_dirty_tracking.rb', line 56 def tracked_relations @tracked_relations ||= relations.keys.select { |rel_name| track_relation?(rel_name) } end |