Sha256: 87ac2bd55cf16575c25ee536e882fb513bbeecf3bad1663f049594af5122d829

Contents?: true

Size: 1.41 KB

Versions: 29

Compression:

Stored size: 1.41 KB

Contents

# encoding: utf-8
module Mongoid
  module Relations

    # Used for converting foreign key values to the correct type based on the
    # types of ids that the document stores.
    #
    # @note Durran: The name of this class is this way to match the metadata
    #   getter, and foreign_key was already taken there.
    class Constraint
      attr_reader :metadata

      # Create the new constraint with the metadata.
      #
      # @example Instantiate the constraint.
      #   Constraint.new(metdata)
      #
      # @param [ Metadata ] metadata The metadata of the relation.
      #
      # @since 2.0.0.rc.7
      def initialize(metadata)
        @metadata = metadata
      end

      # Convert the supplied object to the appropriate type to set as the
      # foreign key for a relation.
      #
      # @example Convert the object.
      #   constraint.convert("12345")
      #
      # @param [ Object ] object The object to convert.
      #
      # @return [ Object ] The object cast to the correct type.
      #
      # @since 2.0.0.rc.7
      def convert(object)
        return object if metadata.polymorphic?
        klass, field = metadata.klass, metadata.klass.fields["_id"]
        if klass.using_object_ids?
          Moped::BSON::ObjectId.mongoize(object)
        elsif object.is_a?(::Array)
          object.map!{ |obj| field.mongoize(obj) }
        else
          field.mongoize(object)
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 4 rubygems

Version Path
mongoid-3.1.7 lib/mongoid/relations/constraint.rb
mongoid-3.1.6 lib/mongoid/relations/constraint.rb
mongoid-3.1.5 lib/mongoid/relations/constraint.rb
mongoid_heroku_stable-4.0.0 lib/mongoid/relations/constraint.rb
mongoid_rails4-4.0.0 lib/mongoid/relations/constraint.rb
mongoid-3.1.4 lib/mongoid/relations/constraint.rb
mongoid-3.1.3 lib/mongoid/relations/constraint.rb
mongoid-3.1.2 lib/mongoid/relations/constraint.rb
mongoid-3.0.23 lib/mongoid/relations/constraint.rb
mongoid-3.1.1 lib/mongoid/relations/constraint.rb
mongoid-3.1.0 lib/mongoid/relations/constraint.rb
mongoid-3.0.22 lib/mongoid/relations/constraint.rb
mongoid-3.0.21 lib/mongoid/relations/constraint.rb
mongoid-3.0.20 lib/mongoid/relations/constraint.rb
mongoid-3.0.19 lib/mongoid/relations/constraint.rb
mongoid-3.0.18 lib/mongoid/relations/constraint.rb
mongoid-3.0.17 lib/mongoid/relations/constraint.rb
sunrise-cms-0.5.0.rc1 vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.16/lib/mongoid/relations/constraint.rb
mongoid-3.0.16 lib/mongoid/relations/constraint.rb
mongoid-3.0.15 lib/mongoid/relations/constraint.rb