Sha256: 2fa1412796833fbdd1357073db3fbab6a665a51a7f04c55c2d11c89c6778e3bf

Contents?: true

Size: 1.08 KB

Versions: 17

Compression:

Stored size: 1.08 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_safety_options!
            end
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
mongoid-2.2.6 lib/mongoid/persistence/insertion.rb
mongoid-2.2.5 lib/mongoid/persistence/insertion.rb
mongoid-2.2.4 lib/mongoid/persistence/insertion.rb
mongoid-2.2.3 lib/mongoid/persistence/insertion.rb
mongoid-2.2.2 lib/mongoid/persistence/insertion.rb
mongoid-2.2.1 lib/mongoid/persistence/insertion.rb
mongoid-2.2.0 lib/mongoid/persistence/insertion.rb
mongoid-2.1.9 lib/mongoid/persistence/insertion.rb
mongoid-2.1.8 lib/mongoid/persistence/insertion.rb
mongoid-2.1.7 lib/mongoid/persistence/insertion.rb
mongoid-2.1.6 lib/mongoid/persistence/insertion.rb
mongoid-2.1.5 lib/mongoid/persistence/insertion.rb
mongoid-2.1.4 lib/mongoid/persistence/insertion.rb
mongoid-2.1.3 lib/mongoid/persistence/insertion.rb
mongoid-2.1.2 lib/mongoid/persistence/insertion.rb
mongoid-2.1.1 lib/mongoid/persistence/insertion.rb
mongoid-2.1.0 lib/mongoid/persistence/insertion.rb