module Ansr::DummyAssociations::ClassMethods

Public Instance Methods

create_reflection(macro, name, scope, options, active_record) click to toggle source
# File lib/ansr/dummy_associations.rb, line 5
def create_reflection(macro, name, scope, options, active_record)
  case macro
  when :has_many, :belongs_to, :has_one, :has_and_belongs_to_many
    klass = options[:through] ? DummyThroughReflection : DummyAssociationReflection
    reflection = klass.new(macro, name, scope, options, active_record)
  when :composed_of
    reflection = DummyAggregateReflection.new(macro, name, scope, options, active_record)
  end

  self.reflections = self.reflections.merge(name => reflection)
  reflection
end
reflect_on_aggregation(aggregation) click to toggle source

Returns the AggregateReflection object for the named aggregation (use the symbol).

Account.reflect_on_aggregation(:balance) # => the balance AggregateReflection
# File lib/ansr/dummy_associations.rb, line 27
def reflect_on_aggregation(aggregation)
  reflection = reflections[aggregation]
  reflection if reflection.is_a?(DummyAggregateReflection)
end
reflect_on_all_aggregations() click to toggle source

Returns an array of AggregateReflection objects for all the aggregations in the class.

# File lib/ansr/dummy_associations.rb, line 19
def reflect_on_all_aggregations
  reflections.values.grep(DummyAggregateReflection)
end
reflect_on_all_associations(macro = nil) click to toggle source

Returns an array of DummyAssociationReflection objects for all the associations in the class. If you only want to reflect on a certain association type, pass in the symbol (:has_many, :has_one, :belongs_to) as the first parameter.

Example:

Account.reflect_on_all_associations             # returns an array of all associations
Account.reflect_on_all_associations(:has_many)  # returns an array of all has_many associations
# File lib/ansr/dummy_associations.rb, line 42
def reflect_on_all_associations(macro = nil)
  association_reflections = reflections.values.grep(DummyAssociationReflection)
  macro ? association_reflections.select { |reflection| reflection.macro == macro } : association_reflections
end
reflect_on_all_autosave_associations() click to toggle source

Returns an array of AssociationReflection objects for all associations which have :autosave enabled.

# File lib/ansr/dummy_associations.rb, line 58
def reflect_on_all_autosave_associations
  reflections.values.select { |reflection| reflection.options[:autosave] }
end
reflect_on_association(association) click to toggle source

Returns the DummyAssociationReflection object for the association (use the symbol).

Account.reflect_on_association(:owner)             # returns the owner AssociationReflection
Invoice.reflect_on_association(:line_items).macro  # returns :has_many
# File lib/ansr/dummy_associations.rb, line 52
def reflect_on_association(association)
  reflection = reflections[association]
  reflection if reflection.is_a?(DummyAssociationReflection)
end