123456789_123456789_123456789_123456789_123456789_

Module: Mongoid::Association::Constrainable

Overview

Used for converting foreign key values to the correct type based on the types of ids that the document stores.

Instance Method Summary

Instance Method Details

#convert_polymorphic(object) (private)

[ GitHub ]

  
# File 'lib/mongoid/association/constrainable.rb', line 34

def convert_polymorphic(object)
  if object.is_a?(Mongoid::Document)
    object._id
  else
    BSON::ObjectId.mongoize(object)
  end
end

#convert_to_foreign_key(object) ⇒ Object

Convert the supplied object to the appropriate type to set as the foreign key for an association.

Examples:

Convert the object.

constraint.convert("12345")

Parameters:

  • object (Object)

    The object to convert.

Returns:

  • (Object)

    The object cast to the correct type.

[ GitHub ]

  
# File 'lib/mongoid/association/constrainable.rb', line 20

def convert_to_foreign_key(object)
  return convert_polymorphic(object) if polymorphic?
  field = relation_class.fields["_id"]
  if relation_class.using_object_ids?
    BSON::ObjectId.mongoize(object)
  elsif object.is_a?(::Array)
    object.map!{ |obj| field.mongoize(obj) }
  else
    field.mongoize(object)
  end
end