Sha256: 96deb8496d2cb8cfb92fb388c55e70ffb4365270d96fdbf6410a993a97bc1649

Contents?: true

Size: 1.55 KB

Versions: 58

Compression:

Stored size: 1.55 KB

Contents

# encoding: utf-8
module Mongoid
  module Relations

    # Superclass for all builder objects. Builders are responsible for either
    # looking up a relation's target from the database, or creating them from a
    # supplied attributes hash.
    class Builder
      include Threaded::Lifecycle

      attr_reader :base, :metadata, :object

      # Instantiate the new builder for a relation.
      #
      # @example Create the builder.
      #   Builder.new(metadata, { :field => "value })
      #
      # @param [ Document ] base The base document.
      # @param [ Metdata ] metadata The metadata for the relation.
      # @param [ Hash, BSON::ObjectId ] object The attributes to build from or
      #   id to query with.
      #
      # @since 2.0.0.rc.1
      def initialize(base, metadata, object)
        @base, @metadata, @object = base, metadata, object
      end

      protected

      # Get the class from the metadata.
      #
      # @example Get the class.
      #   builder.klass
      #
      # @return [ Class ] The class from the metadata.
      #
      # @since 2.3.2
      def klass
        @klass ||= metadata.klass
      end

      # Do we need to perform a database query? It will be so if the object we
      # have is not a document.
      #
      # @example Should we query the database?
      #   builder.query?
      #
      # @return [ true, false ] Whether a database query should happen.
      #
      # @since 2.0.0.rc.1
      def query?
        obj = object.__array__.first
        !obj.is_a?(Mongoid::Document) && !obj.nil?
      end
    end
  end
end

Version data entries

58 entries across 53 versions & 4 rubygems

Version Path
mongoid-6.4.8 lib/mongoid/relations/builder.rb
mongoid-6.4.7 lib/mongoid/relations/builder.rb
mongoid-6.4.5 lib/mongoid/relations/builder.rb
mongoid-5.4.1 lib/mongoid/relations/builder.rb
mongoid-6.4.4 lib/mongoid/relations/builder.rb
mongoid-6.4.2 lib/mongoid/relations/builder.rb
mongoid-6.4.1 lib/mongoid/relations/builder.rb
mongoid-5.4.0 lib/mongoid/relations/builder.rb
tdiary-5.0.8 vendor/bundle/gems/mongoid-6.4.0/lib/mongoid/relations/builder.rb
mongoid-6.4.0 lib/mongoid/relations/builder.rb
mongoid-6.3.0 lib/mongoid/relations/builder.rb
mongoid-6.2.1 lib/mongoid/relations/builder.rb
tdiary-5.0.5 vendor/bundle/gems/mongoid-6.1.0/lib/mongoid/relations/builder.rb
tdiary-5.0.5 vendor/bundle/gems/tdiary-5.0.4/vendor/bundle/gems/mongoid-6.1.0/lib/mongoid/relations/builder.rb
tdiary-5.0.5 vendor/bundle/gems/mongoid-6.2.0/lib/mongoid/relations/builder.rb
mongoid-6.2.0 lib/mongoid/relations/builder.rb
mongoid-6.1.1 lib/mongoid/relations/builder.rb
mongoid-5.2.1 lib/mongoid/relations/builder.rb
tdiary-5.0.4 vendor/bundle/gems/mongoid-6.1.0/lib/mongoid/relations/builder.rb
mongoid-6.1.0 lib/mongoid/relations/builder.rb