Module: Ansr::DummyAssociations::ClassMethods

Defined in:
lib/ansr/dummy_associations.rb

Instance Method Summary collapse

Instance Method Details

#create_reflection(macro, name, scope, options, active_record) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# 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) ⇒ Object

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

Account.reflect_on_aggregation(:balance) # => the balance AggregateReflection


27
28
29
30
# 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_aggregationsObject

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



19
20
21
# File 'lib/ansr/dummy_associations.rb', line 19

def reflect_on_all_aggregations
  reflections.values.grep(DummyAggregateReflection)
end

#reflect_on_all_associations(macro = nil) ⇒ Object

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


42
43
44
45
# 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_associationsObject

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



58
59
60
# 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) ⇒ Object

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


52
53
54
55
# File 'lib/ansr/dummy_associations.rb', line 52

def reflect_on_association(association)
  reflection = reflections[association]
  reflection if reflection.is_a?(DummyAssociationReflection)
end