class Mongoid::Persistence::Operations::Embedded::Insert

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
);

Public Instance Methods

persist() click to toggle source

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.

@example Insert an embedded document.

Insert.persist

@return [ Document ] The document to be inserted.

# File lib/mongoid/persistence/operations/embedded/insert.rb, line 30
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