Sha256: de4d14293353cebc23edfd343bb6d1855eef883c026f16a7fbb3838af135a8d2

Contents?: true

Size: 1003 Bytes

Versions: 3

Compression:

Stored size: 1003 Bytes

Contents

module MongoMapper
  module Associations
    class Base
      attr_reader :type, :name, :options

      def initialize(type, name, options = {})
        @options = options
        @type = type
        @name = name
      end

      def klass
        class_name.constantize
      end

      def class_name
        @class_name ||= begin
          if cn = options[:class_name]
            cn
          elsif @type == :many
            name.to_s.singularize.camelize
          else
            name.to_s.camelize
          end
        end
      end

      def ivar
        @ivar ||= "@_#{name}"
      end

      def proxy_class
        case @type
          when :belongs_to
            if @options[:polymorphic]
              PolymorphicBelongsToProxy
            else
              BelongsToProxy
            end
          when :many
            if self.klass.embeddable?
              HasManyEmbeddedProxy
            else
              HasManyProxy
            end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 3 rubygems

Version Path
crnixon-mongomapper-0.2.0 lib/mongomapper/associations/base.rb
jnunemaker-mongomapper-0.2.0 lib/mongomapper/associations/base.rb
ramsingla-mongomapper-0.2.1 lib/mongomapper/associations/base.rb