class Dread::MissingGraph

Attributes

clazz[R]

Public Class Methods

new(clazz) click to toggle source
# File lib/dread/missing_graph.rb, line 5
def initialize(clazz)
  @clazz = clazz.classify.constantize
end

Public Instance Methods

missing_dependables() click to toggle source
# File lib/dread/missing_graph.rb, line 9
def missing_dependables
  possesionable_associations.map do |assoc_name, assoc_data|
    assoc_name if direct_association_with_no_dependents?(assoc_data)
  end.compact
end

Private Instance Methods

direct_association_with_no_dependents?(assoc_data) click to toggle source
# File lib/dread/missing_graph.rb, line 17
def direct_association_with_no_dependents?(assoc_data)
  assoc_data.options[:through].nil? && assoc_data.options[:dependent].nil?
end
has_many_associations() click to toggle source
# File lib/dread/missing_graph.rb, line 25
def has_many_associations
  @has_many_associations ||= begin
    clazz.reflections.select do |assoc_name, assoc_data|
      assoc_data.macro == :has_many
    end
  end
end
has_one_associations() click to toggle source
# File lib/dread/missing_graph.rb, line 33
def has_one_associations
  @has_one_associations ||= begin
    clazz.reflections.select do |assoc_name, assoc_data|
      assoc_data.macro == :has_one
    end
  end
end
possesionable_associations() click to toggle source
# File lib/dread/missing_graph.rb, line 21
def possesionable_associations
  has_many_associations.merge(has_one_associations)
end