Sha256: 8c0adf268c6108d0649483bebe85fa1eaaa993622817cd1c08b2c9f4f8918502

Contents?: true

Size: 674 Bytes

Versions: 2

Compression:

Stored size: 674 Bytes

Contents

module MongoMapper
  module Associations
    class HasManyProxy < ArrayProxy
      def replace(v)
        if load_target
          @target.map(&:destroy)
        end

        v.each do |o|
          @owner.save if @owner.new?
          o.__send__(:write_attribute, self.foreign_key, @owner.id)
          o.save
          o
        end
        
        reload_target
      end

      protected
        def find_target
          @association.klass.find(:all, {:conditions => {self.foreign_key => @owner.id}})
        end

        def foreign_key
          @association.options[:foreign_key] || @owner.class.name.underscore.gsub("/", "_") + "_id"
        end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fcoury-mongomapper-0.2.0 lib/mongomapper/associations/has_many_proxy.rb
fcoury-mongomapper-0.4.0 lib/mongomapper/associations/has_many_proxy.rb