class ActiveRecord::Reflection::MacroReflection - activerecord-4.2.4 Documentation

# class ActiveRecord::Reflection::MacroReflection

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

    MacroReflection
      AssociationReflection
        AggregateReflection
        HasManyReflection
        HasOneReflection
        BelongsToReflection
          ThroughReflection

### Attributes

active_record[R]
name[R]

Returns the name of the macro.

`composed_of :balance, class_name: 'Money'` returns `:balance` `has_many :clients` returns `:clients`

options[R]

Returns the hash of options used for the macro.

`composed_of :balance, class_name: 'Money'` returns `{ class_name: "Money" }` `has_many :clients` returns `{}`

scope[R]

### Public Class Methods

new(name, scope, options, active_record) click to toggle source

    # File lib/active_record/reflection.rb, line 194
    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

### Public Instance Methods

==(other_aggregation) click to toggle source

Returns `true` if `self` and `other_aggregation` have the same `name` attribute, `active_record` attribute, and `other_aggregation` has an options hash assigned to it.

Calls superclass method

    # File lib/active_record/reflection.rb, line 227
    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

autosave=(autosave) click to toggle source

    # File lib/active_record/reflection.rb, line 204
    def autosave=(autosave)
      @automatic_inverse_of = false
      @options[:autosave] = autosave
      _, parent_reflection = self.parent_reflection
      if parent_reflection
        parent_reflection.autosave = autosave
      end
    end

compute_class(name) click to toggle source

    # File lib/active_record/reflection.rb, line 221
    def compute_class(name)
      name.constantize
    end

klass() click to toggle source

Returns the class for the macro.

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

    # File lib/active_record/reflection.rb, line 217
    def klass
      @klass ||= compute_class(class_name)
    end

### Private Instance Methods

derive_class_name() click to toggle source

    # File lib/active_record/reflection.rb, line 236
    def derive_class_name
      name.to_s.camelize
    end