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
trueifselfandother_aggregationhave the samenameattribute,active_entityattribute, andother_aggregationhas 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 |