module Mongoid::Persistence::Upsertion

Contains common logic for upsert operations.

Public Instance Methods

prepare() { |document| ... } click to toggle source

Wrap all the common upsert logic for root docments.

@example Execute common upsert logic.

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

@param [ Proc ] block The block to call.

@return [ true, false ] If the save passed or not.

@since 3.0.0

# File lib/mongoid/persistence/upsertion.rb, line 19
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
  document.new_record = false
  result
end