Module: DatastaxRails::Reflection::ClassMethods

Defined in:
lib/datastax_rails/reflection.rb

Overview

rubocop:disable Style/Documentation

Instance Method Summary collapse

Instance Method Details

#create_reflection(macro, name, options, datastax_rails) ⇒ Object


22
23
24
25
26
27
# File 'lib/datastax_rails/reflection.rb', line 22

def create_reflection(macro, name, options, datastax_rails)
  klass = options[:through] ? ThroughReflection : AssociationReflection
  reflection = klass.new(macro, name, options, datastax_rails)
  self.reflections = reflections.merge(name => reflection)
  reflection
end

#reflect_on_all_associations(macro = nil) ⇒ Object

Returns an array of AssociationReflection 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

39
40
41
42
# File 'lib/datastax_rails/reflection.rb', line 39

def reflect_on_all_associations(macro = nil)
  association_reflections = reflections.values.grep(AssociationReflection)
  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.


54
55
56
# File 'lib/datastax_rails/reflection.rb', line 54

def reflect_on_all_autosave_associations
  reflections.values.select { |reflection| reflection.options[:autosave] }
end

#reflect_on_association(association) ⇒ Object

Returns the AssociationReflection 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

49
50
51
# File 'lib/datastax_rails/reflection.rb', line 49

def reflect_on_association(association)
  reflections[association].is_a?(AssociationReflection) ? reflections[association] : nil
end