Sha256: 03ff86d9d18485f6580d7b706a915a9b40665507d2eb23bbcd0543078ec68e5a

Contents?: true

Size: 1.07 KB

Versions: 8

Compression:

Stored size: 1.07 KB

Contents

# encoding: utf-8
module Mongoid #:nodoc:
  module Persistence #:nodoc:

    # Contains common logic for insertion operations.
    module Insertion

      # Wrap all the common insertion logic for both root and embedded
      # documents and then yield to the block.
      #
      # @example Execute common insertion logic.
      #   prepare do |doc|
      #     collection.insert({ :field => "value })
      #   end
      #
      # @param [ Proc ] block The block to call.
      #
      # @return [ Document ] The inserted document.
      #
      # @since 2.1.0
      def prepare(&block)
        document.tap do |doc|
          unless validating? && document.invalid?(:create)
            result = doc.run_callbacks(:save) do
              doc.run_callbacks(:create) do
                yield(doc)
                doc.new_record = false
                doc.reset_persisted_children and true
              end
            end

            unless result == false
              doc.move_changes
              Threaded.clear_options!
            end
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 2 rubygems

Version Path
mongoid-multi-db-3.0.0 lib/mongoid/persistence/insertion.rb
mongoid-2.3.5 lib/mongoid/persistence/insertion.rb
mongoid-2.4.0 lib/mongoid/persistence/insertion.rb
mongoid-2.3.4 lib/mongoid/persistence/insertion.rb
mongoid-2.3.3 lib/mongoid/persistence/insertion.rb
mongoid-2.3.2 lib/mongoid/persistence/insertion.rb
mongoid-2.3.1 lib/mongoid/persistence/insertion.rb
mongoid-2.3.0 lib/mongoid/persistence/insertion.rb