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