lib/mongo_mapper/associations/base.rb in mrkurt-mongo_mapper-0.6.8 vs lib/mongo_mapper/associations/base.rb in mrkurt-mongo_mapper-0.6.9
- old
+ new
@@ -2,11 +2,11 @@
module Associations
class Base
attr_reader :type, :name, :options, :finder_options
# Options that should not be considered MongoDB query options/criteria
- AssociationOptions = [:as, :class, :class_name, :dependent, :extend, :foreign_key, :polymorphic]
+ AssociationOptions = [:as, :class, :class_name, :dependent, :extend, :foreign_key, :in, :polymorphic]
def initialize(type, name, options={}, &extension)
@type, @name, @options, @finder_options = type, name, {}, {}
options.symbolize_keys!
@@ -54,11 +54,19 @@
end
def as?
!!@options[:as]
end
+
+ def in_array?
+ !!@options[:in]
+ end
+ def embeddable?
+ many? && klass.embeddable?
+ end
+
def type_key_name
@type_key_name ||= many? ? '_type' : "#{as}_type"
end
def as
@@ -71,34 +79,32 @@
def ivar
@ivar ||= "@_#{name}"
end
- def embeddable?
- many? && klass.embeddable?
- end
-
def proxy_class
@proxy_class ||= begin
if many?
if self.klass.embeddable?
polymorphic? ? ManyEmbeddedPolymorphicProxy : ManyEmbeddedProxy
else
if polymorphic?
ManyPolymorphicProxy
elsif as?
ManyDocumentsAsProxy
+ elsif in_array?
+ InArrayProxy
else
ManyDocumentsProxy
end
end
elsif one?
OneProxy
else
polymorphic? ? BelongsToPolymorphicProxy : BelongsToProxy
end
- end # end begin
- end # end proxy_class
+ end
+ end
private
# @param [Array<Module, Proc>] extensions a collection of Modules or
# Procs that extend the behaviour of this association.