Class: Mongoid::Persistence::Operations::Embedded::Insert
- Inherits:
-
Object
- Object
- Mongoid::Persistence::Operations::Embedded::Insert
- Defined in:
- lib/mongoid/persistence/operations/embedded/insert.rb
Overview
Insert is a persistence command responsible for taking a document that has not been saved to the database and saving it. This specific class handles the case when the document is embedded in another.
The underlying query resembles the following MongoDB query:
collection.update(
{ "_id" : 1 },
{ "$push" : { "field" : "value" } },
false
);
Instance Attribute Summary
Attributes included from Mongoid::Persistence::Operations
#conflicts, #document, #options
Instance Method Summary collapse
-
#persist ⇒ Document
Insert the new document in the database.
Methods included from Atomic::Positionable
Methods included from Mongoid::Persistence::Operations
#collection, #deletes, #initialize, insert, #inserts, #notifying_parent?, #parent, remove, #selector, update, #updates, upsert, #validating?
Methods included from Insertion
Instance Method Details
#persist ⇒ Document
Insert the new document in the database. If the document’s parent is a new record, we will call save on the parent, otherwise we will $push the document onto the parent.
31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/mongoid/persistence/operations/embedded/insert.rb', line 31 def persist prepare do raise Errors::NoParent.new(document.class.name) unless parent if parent.new_record? parent.insert else selector = parent.atomic_selector collection.find(selector).update(positionally(selector, inserts)) end end end |