Class: Mongoid::Atomic::Paths::Embedded::Many
- Inherits:
-
Object
- Object
- Mongoid::Atomic::Paths::Embedded::Many
- Includes:
- Mongoid::Atomic::Paths::Embedded
- Defined in:
- lib/mongoid/atomic/paths/embedded/many.rb
Overview
This class encapsulates behavior for locating and updating documents that are defined as an embedded 1-n.
Instance Attribute Summary
Attributes included from Mongoid::Atomic::Paths::Embedded
#delete_modifier, #document, #insert_modifier, #parent
Class Method Summary collapse
-
.position_without_document(parent, association) ⇒ String
Get the position of where the document would go for the given association.
Instance Method Summary collapse
-
#initialize(document) ⇒ Many
constructor
Create the new path utility.
-
#position ⇒ String
Get the position of the document in the hierarchy.
Methods included from Mongoid::Atomic::Paths::Embedded
Constructor Details
#initialize(document) ⇒ Many
Create the new path utility.
20 21 22 23 |
# File 'lib/mongoid/atomic/paths/embedded/many.rb', line 20 def initialize(document) @document, @parent = document, document._parent @insert_modifier, @delete_modifier ="$push", "$pull" end |
Class Method Details
.position_without_document(parent, association) ⇒ String
Get the position of where the document would go for the given association. The use case for this function is when trying to persist an empty list for an embedded association. All of the existing functions for getting the position to store a document require passing in a document to store, which we don’t have when trying to store the empty list.
52 53 54 55 |
# File 'lib/mongoid/atomic/paths/embedded/many.rb', line 52 def position_without_document(parent, association) pos = parent.atomic_position "#{pos}#{"." unless pos.blank?}#{association.store_as}" end |
Instance Method Details
#position ⇒ String
Get the position of the document in the hierarchy. This will include indexes of 1-n embedded associations that may sit above the embedded many.
33 34 35 36 37 |
# File 'lib/mongoid/atomic/paths/embedded/many.rb', line 33 def position pos = parent.atomic_position locator = document.new_record? ? "" : ".#{document._index}" "#{pos}#{"." unless pos.blank?}#{document._association.store_as}#{locator}" end |