Class: Mongoid::Persistence::Operations::Embedded::Insert

Inherits:
Object
  • Object
show all
Includes:
Atomic::Positionable, Insertion, Mongoid::Persistence::Operations
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

Methods included from Atomic::Positionable

#positionally

Methods included from Mongoid::Persistence::Operations

#collection, #deletes, #initialize, insert, #inserts, #notifying_parent?, #parent, remove, #selector, update, #updates, upsert, #validating?

Methods included from Insertion

#prepare

Instance Method Details

#persistDocument

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.

Examples:

Insert an embedded document.

Insert.persist

Returns:

  • (Document)

    The document to be inserted.



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