Sha256: b3514a3051a76a58d056d3aadd5fa2ddc4d989e042be06e3b87abc88efde2a69

Contents?: true

Size: 911 Bytes

Versions: 11

Compression:

Stored size: 911 Bytes

Contents

# encoding: UTF-8
module MongoMapper
  module Plugins
    module Associations
      class BelongsToPolymorphicProxy < Proxy
        def replace(doc)
          if doc
            doc.save unless doc.persisted?
            id, type = doc.id, doc.class.name
          end

          proxy_owner[association.foreign_key] = id
          proxy_owner[association.type_key_name] = type
          reset
          unless doc.nil?
            loaded
            @target = doc
          end
          @target
        end

      protected

        def find_target
          return nil if association_class.nil? || proxy_owner[association.foreign_key].nil?
          association_class.find_by_id(proxy_owner[association.foreign_key])
        end

        def association_class
          proxy_owner[association.type_key_name] ? proxy_owner[association.type_key_name].constantize : nil
        end
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
mongo_mapper-0.17.0 lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.16.0 lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.6 lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.5 lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.4 lib/mongo_mapper/plugins/associations/proxy/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.3 lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.2 lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.1 lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.15.0 lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.14.0 lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb
mongo_mapper-0.14.0.rc1 lib/mongo_mapper/plugins/associations/belongs_to_polymorphic_proxy.rb