class ForeignKeyValidation::Collector

Attributes

options[RW]

Public Class Methods

new(opt={}) click to toggle source
# File lib/foreign_key_validation/collector.rb, line 6
def initialize(opt={})
  self.options = opt
end

Public Instance Methods

check!() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 10
def check!
  raise Errors::NoReleationFoundError.new(klass.name) if reflection_names.empty?
  raise Errors::NoForeignKeyFoundError.new(validate_against, klass.table_name) unless reflection_names.include?(validate_against)
  raise Errors::UnknownRelationError.new(validate_with) unless validate_with.all? {|k| reflection_names.include?(k)}
  true
end
klass() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 17
def klass
  @klass ||= options[:klass]
end
reflection_names() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 33
def reflection_names
  @reflection_names ||= reflections.map {|r| r.name.to_s }
end
reflections() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 29
def reflections
  @reflections ||= klass.reflect_on_all_associations(:belongs_to)
end
validate_against() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 21
def validate_against
  @validate_against ||= (options[:on] || ForeignKeyValidation.configuration.validate_against).to_s
end
validate_against_key() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 37
def validate_against_key
  @validate_against_key ||= reflections.select {|r| r.name.to_s == validate_against}.first.try(:foreign_key)
end
validate_with() click to toggle source
# File lib/foreign_key_validation/collector.rb, line 25
def validate_with
  @validate_with ||= ((Array(options[:with]).map(&:to_s) if options[:with]) || reflection_names).reject {|n| n == validate_against}
end