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