Sha256: 65e2eeab66633266960e42d6e513ce60b4afb6136314dcce780e911edff03982

Contents?: true

Size: 798 Bytes

Versions: 51

Compression:

Stored size: 798 Bytes

Contents

module MongoMapper
  module Associations
    class ManyEmbeddedPolymorphicProxy < Proxy      
      def replace(v)
        @_values = v.map do |doc_or_hash|
          if doc_or_hash.kind_of?(EmbeddedDocument)
            doc = doc_or_hash
            {@association.type_key_name => doc.class.name}.merge(doc.attributes)
          else
            doc_or_hash
          end
        end
        
        reset
      end

      protected
        def find_target
          (@_values || []).map do |hash|
            polymorphic_class(hash).new(hash)
          end
        end
        
        def polymorphic_class(doc)
          if class_name = doc[@association.type_key_name]
            class_name.constantize
          else
            @association.klass
          end
        end
    end
  end
end

Version data entries

51 entries across 51 versions & 9 rubygems

Version Path
crnixon-mongomapper-0.3.4 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.1.1 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.1 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.3 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.5.1 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.5.2 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.5.4 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.5.5 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
djsun-mongomapper-0.3.5 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.10 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.11 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.12 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.13 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.14 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.15 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.3 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.4.1 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.4 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.5 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb
hashrocket-mongomapper-0.3.6 lib/mongomapper/associations/many_embedded_polymorphic_proxy.rb