lib/mongo_mapper/plugins/associations/proxy.rb in mongo_mapper-unstable-2010.3.8 vs lib/mongo_mapper/plugins/associations/proxy.rb in mongo_mapper-unstable-2010.06.23

- old
+ new

@@ -1,26 +1,28 @@ +# encoding: UTF-8 +require 'forwardable' module MongoMapper module Plugins module Associations class Proxy + extend Forwardable + alias :proxy_respond_to? :respond_to? alias :proxy_extend :extend instance_methods.each { |m| undef_method m unless m =~ /(^__|^nil\?$|^send$|proxy_|^object_id$)/ } - attr_reader :owner, :association, :target + attr_reader :proxy_owner, :association, :target - alias :proxy_owner :owner alias :proxy_target :target alias :proxy_association :association - delegate :klass, :to => :proxy_association - delegate :options, :to => :proxy_association - delegate :collection, :to => :klass + def_delegators :proxy_association, :klass, :options + def_delegator :klass, :collection def initialize(owner, association) - @owner, @association, @loaded = owner, association, false + @proxy_owner, @association, @loaded = owner, association, false Array(association.options[:extend]).each { |ext| proxy_extend(ext) } reset end def inspect @@ -94,11 +96,17 @@ end end end def load_target - @target = find_target unless loaded? - loaded + unless loaded? + if @target.is_a?(Array) && @target.any? + @target = find_target + @target.find_all { |record| record.new? } + else + @target = find_target + end + loaded + end @target rescue MongoMapper::DocumentNotFound reset end