Class: ActiveEntity::Reflection::MacroEmbeddedReflection
- Inherits:
-
AbstractEmbeddedReflection
- Object
- AbstractReflection
- AbstractEmbeddedReflection
- ActiveEntity::Reflection::MacroEmbeddedReflection
- Defined in:
- lib/active_entity/reflection.rb
Overview
Base class for AggregateReflection and AssociationReflection. Objects of AggregateReflection and AssociationReflection are returned by the Reflection::ClassMethods.
Direct Known Subclasses
Instance Attribute Summary collapse
-
#active_entity ⇒ Object
readonly
Returns the value of attribute active_entity.
-
#name ⇒ Object
readonly
Returns the name of the macro.
-
#options ⇒ Object
readonly
Returns the hash of options used for the macro.
Instance Method Summary collapse
-
#==(other_aggregation) ⇒ Object
Returns
true
ifself
andother_aggregation
have the samename
attribute,active_entity
attribute, andother_aggregation
has an options hash assigned to it. - #compute_class(name) ⇒ Object
-
#initialize(name, scope, options, active_entity) ⇒ MacroEmbeddedReflection
constructor
A new instance of MacroEmbeddedReflection.
-
#klass ⇒ Object
Returns the class for the macro.
Methods inherited from AbstractEmbeddedReflection
#build_association, #check_validity_of_inverse!, #class_name, #embedded?, #inverse_of, #through_reflection?
Methods inherited from AbstractReflection
Constructor Details
#initialize(name, scope, options, active_entity) ⇒ MacroEmbeddedReflection
Returns a new instance of MacroEmbeddedReflection.
211 212 213 214 215 216 217 |
# File 'lib/active_entity/reflection.rb', line 211 def initialize(name, scope, , active_entity) @name = name @scope = scope = @active_entity = active_entity @klass = [:anonymous_class] end |
Instance Attribute Details
#active_entity ⇒ Object (readonly)
Returns the value of attribute active_entity.
209 210 211 |
# File 'lib/active_entity/reflection.rb', line 209 def active_entity @active_entity end |
#name ⇒ Object (readonly)
Returns the name of the macro.
composed_of :balance, class_name: 'Money'
returns :balance
has_many :clients
returns :clients
201 202 203 |
# File 'lib/active_entity/reflection.rb', line 201 def name @name end |
#options ⇒ Object (readonly)
Returns the hash of options used for the macro.
composed_of :balance, class_name: 'Money'
returns { class_name: "Money" }
has_many :clients
returns {}
207 208 209 |
# File 'lib/active_entity/reflection.rb', line 207 def end |
Instance Method Details
#==(other_aggregation) ⇒ Object
Returns true
if self
and other_aggregation
have the same name
attribute, active_entity
attribute, and other_aggregation
has an options hash assigned to it.
244 245 246 247 248 249 250 |
# File 'lib/active_entity/reflection.rb', line 244 def ==(other_aggregation) super || other_aggregation.kind_of?(self.class) && name == other_aggregation.name && !other_aggregation..nil? && active_entity == other_aggregation.active_entity end |
#compute_class(name) ⇒ Object
238 239 240 |
# File 'lib/active_entity/reflection.rb', line 238 def compute_class(name) name.constantize end |
#klass ⇒ Object
Returns the class for the macro.
composed_of :balance, class_name: 'Money'
returns the Money class has_many :clients
returns the Client class
class Company < ActiveEntity::Base
has_many :clients
end
Company.reflect_on_association(:clients).klass
# => Client
Note: Do not call klass.new
or klass.create
to instantiate a new association object. Use build_association
or create_association
instead. This allows plugins to hook into association object creation.
234 235 236 |
# File 'lib/active_entity/reflection.rb', line 234 def klass @klass ||= compute_class(class_name) end |