module DatabaseValidations::Rescuer
Public Instance Methods
handled?(instance, error)
click to toggle source
# File lib/database_validations/lib/rescuer.rb, line 5 def handled?(instance, error) Storage.prepare(instance.class) unless Storage.prepared?(instance.class) case error when ActiveRecord::RecordNotUnique process(instance, error, for_unique_index: :unique_index_name, for_db_uniqueness: :unique_error_columns) when ActiveRecord::InvalidForeignKey process(instance, error, for_db_presence: :foreign_key_error_column) else false end end
process(instance, error, key_types)
click to toggle source
# File lib/database_validations/lib/rescuer.rb, line 17 def process(instance, error, key_types) adapter = Adapters.factory(instance.class) keys = key_types.map do |key_generator, error_processor| KeyGenerator.public_send(key_generator, adapter.public_send(error_processor, error.message)) end keys.each do |key| attribute_validator = instance._db_validators[key] next unless attribute_validator return process_validator(instance, attribute_validator) end false end
process_validator(instance, attribute_validator)
click to toggle source
# File lib/database_validations/lib/rescuer.rb, line 35 def process_validator(instance, attribute_validator) return false unless attribute_validator.validator.perform_db_validation? attribute_validator.validator.apply_error(instance, attribute_validator.attribute) true end