module Mongoid::Association::Referenced::BelongsTo::Buildable

The Builder behavior for belongs_to associations.

Public Instance Methods

build(base, object, type = nil, selected_fields = nil) click to toggle source

This method either takes an _id or an object and queries for the inverse side using the id or sets the object.

@example Build the document.

relation.build(meta, attrs)

@param [ Object ] base The base object. @param [ Object ] object The object to use to build the association. @param [ String ] type The type of the association. @param [ nil ] selected_fields Must be nil.

@return [ Document ] A single document.

# File lib/mongoid/association/referenced/belongs_to/buildable.rb, line 24
def build(base, object, type = nil, selected_fields = nil)
  return object unless query?(object)
  execute_query(object, type)
end

Private Instance Methods

execute_query(object, type) click to toggle source
# File lib/mongoid/association/referenced/belongs_to/buildable.rb, line 31
def execute_query(object, type)
  query_criteria(object, type).take
end
query?(object) click to toggle source
# File lib/mongoid/association/referenced/belongs_to/buildable.rb, line 42
def query?(object)
  object && !object.is_a?(Mongoid::Document)
end
query_criteria(object, type) click to toggle source
# File lib/mongoid/association/referenced/belongs_to/buildable.rb, line 35
def query_criteria(object, type)
  cls = type ? (type.is_a?(String) ? type.constantize : type) : relation_class
  crit = cls.criteria
  crit = crit.apply_scope(scope)
  crit.where(primary_key => object)
end