class ActiveRecord::Reflection::MacroReflection

AggregateReflection and AssociationReflection are returned by the Reflection::ClassMethods.
Base class for AggregateReflection and AssociationReflection. Objects of

def ==(other_aggregation)

and +other_aggregation+ has an options hash assigned to it.
Returns +true+ if +self+ and +other_aggregation+ have the same +name+ attribute, +active_record+ attribute,
def ==(other_aggregation)
  super ||
    other_aggregation.kind_of?(self.class) &&
    name == other_aggregation.name &&
    !other_aggregation.options.nil? &&
    active_record == other_aggregation.active_record
end

def autosave=(autosave)

def autosave=(autosave)
  @options[:autosave] = autosave
  parent_reflection = self.parent_reflection
  if parent_reflection
    parent_reflection.autosave = autosave
  end
end

def compute_class(name)

def compute_class(name)
  name.constantize
end

def derive_class_name

def derive_class_name
  name.to_s.camelize
end

def initialize(name, scope, options, active_record)

def initialize(name, scope, options, active_record)
  @name          = name
  @scope         = scope
  @options       = options
  @active_record = active_record
  @klass         = options[:anonymous_class]
  @plural_name   = active_record.pluralize_table_names ?
                      name.to_s.pluralize : name.to_s
end

def klass

instead. This allows plugins to hook into association object creation.
a new association object. Use +build_association+ or +create_association+
Note: Do not call +klass.new+ or +klass.create+ to instantiate

# => Client
Company.reflect_on_association(:clients).klass

end
has_many :clients
class Company < ActiveRecord::Base

has_many :clients returns the Client class
composed_of :balance, class_name: 'Money' returns the Money class

Returns the class for the macro.
def klass
  @klass ||= compute_class(class_name)
end

def scope_for(relation, owner = nil)

def scope_for(relation, owner = nil)
  relation.instance_exec(owner, &scope) || relation
end