class ForeignKeyValidation::Validator
Attributes
object[RW]
reflection_names[RW]
validate_against_key[RW]
Public Class Methods
new(opt={})
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 7 def initialize(opt={}) self.validate_against_key = opt[:validate_against_key] self.reflection_names = opt[:reflection_names] || [] self.object = opt[:object] end
Public Instance Methods
validate()
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 13 def validate to_enum(:invalid_reflection_names).map {|n| attach_error(n) }.any? end
Private Instance Methods
attach_error(reflection_name)
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 44 def attach_error(reflection_name) object.errors.add(validate_against_key, ForeignKeyValidation.configuration.error_message.call(validate_against_key, reflection_name, object)) end
invalid_reflection_names() { |reflection_name| ... }
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 19 def invalid_reflection_names(&block) reflection_names.each do |reflection_name| next unless keys_present?(reflection_name) if keys_different?(reflection_name) yield reflection_name end end end
key_on_object()
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 32 def key_on_object object.try(validate_against_key) end
key_on_relation(relation)
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 28 def key_on_relation(relation) object.public_send(relation).try(validate_against_key) end
keys_different?(relation)
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 40 def keys_different?(relation) key_on_object != key_on_relation(relation) end
keys_present?(relation)
click to toggle source
# File lib/foreign_key_validation/validator.rb, line 36 def keys_present?(relation) key_on_object.present? and key_on_relation(relation).present? end