Module: Mongoid::Persistence::Upsertion

Included in:
Operations::Upsert
Defined in:
lib/mongoid/persistence/upsertion.rb

Overview

Contains common logic for upsert operations.

Instance Method Summary collapse

Instance Method Details

#prepare(&block) ⇒ true, false

Wrap all the common upsert logic for root docments.

Examples:

Execute common upsert logic.

prepare do |doc|
  collection.find({ :_id => 1 }).upsert({ name: "test" }, [ :upsert ])
end

Parameters:

  • block (Proc)

    The block to call.

Returns:

  • (true, false)

    If the save passed or not.

Since:

  • 3.0.0



20
21
22
23
24
25
26
27
# File 'lib/mongoid/persistence/upsertion.rb', line 20

def prepare(&block)
  return false if validating? && document.invalid?(:upsert)
  result = document.run_callbacks(:upsert) do
    yield(document); true
  end
  document.post_persist unless result == false
  result
end