class Sprig::Reap::Association

Attributes

association[R]

Public Class Methods

new(association) click to toggle source
# File lib/sprig/reap/association.rb, line 7
def initialize(association)
  @association = association
end

Public Instance Methods

dependencies() click to toggle source
# File lib/sprig/reap/association.rb, line 34
def dependencies
  polymorphic? ? polymorphic_dependencies : Array(klass)
end
foreign_key() click to toggle source
# File lib/sprig/reap/association.rb, line 50
def foreign_key
  has_and_belongs_to_many? ? association.association_foreign_key : association.foreign_key
end
has_and_belongs_to_many?() click to toggle source
# File lib/sprig/reap/association.rb, line 42
def has_and_belongs_to_many?
  association.macro == :has_and_belongs_to_many
end
has_and_belongs_to_many_attr() click to toggle source
# File lib/sprig/reap/association.rb, line 46
def has_and_belongs_to_many_attr
  association.association_foreign_key.pluralize if has_and_belongs_to_many?
end
klass() click to toggle source
# File lib/sprig/reap/association.rb, line 11
def klass
  polymorphic? ? nil : association.klass
end
name() click to toggle source
# File lib/sprig/reap/association.rb, line 15
def name
  association.options[:class_name] || association.name
end
polymorphic?() click to toggle source
# File lib/sprig/reap/association.rb, line 19
def polymorphic?
  !!association.options[:polymorphic]
end
polymorphic_dependencies() click to toggle source
# File lib/sprig/reap/association.rb, line 23
def polymorphic_dependencies
  return [] unless polymorphic?
  @polymorphic_dependencies ||= ActiveRecord::Base.subclasses.select { |model| polymorphic_match? model }
end
polymorphic_match?(model) click to toggle source
# File lib/sprig/reap/association.rb, line 28
def polymorphic_match?(model)
  model.reflect_on_all_associations(:has_many).any? do |has_many_association|
    has_many_association.options[:as] == association.name
  end
end
polymorphic_type() click to toggle source
# File lib/sprig/reap/association.rb, line 38
def polymorphic_type
  polymorphic? ? association.foreign_type : nil
end