Sha256: 114743de212680720f2aff3c8d3119f3aa677fec680f94faeaaeef835da1a205

Contents?: true

Size: 766 Bytes

Versions: 1

Compression:

Stored size: 766 Bytes

Contents

module MongoMapper
  module Associations
    class PolymorphicHasManyEmbeddedProxy < Proxy
      def replace(v)
        @_values = v.map do |e|
          ref_type = "#{@association.name}_type"
          if e.kind_of?(EmbeddedDocument)  
            e.class.send(:key, ref_type, String)
            {ref_type => e.class.name}.merge(e.attributes)
          else
            e
          end
        end
        
        @target = nil

        reload_target
      end

      protected
      def find_target
        (@_values || []).map do |e|
          ref_type = "#{@association.name}_type"
          class_name = e[ref_type]
          klass = class_name ? Kernel.const_get(class_name) : @association.klass
          klass.new(e)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fcoury-mongomapper-0.3.0 lib/mongomapper/associations/polymorphic_has_many_embedded_proxy.rb