Module: DatabaseValidations::Rescuer
- Defined in:
- lib/database_validations/lib/rescuer.rb
Class Method Summary collapse
- .handled?(instance, error) ⇒ Boolean
- .process(instance, error, key_types) ⇒ Object
- .process_validator(instance, attribute_validator) ⇒ Object
Class Method Details
.handled?(instance, error) ⇒ Boolean
5 6 7 8 9 10 11 12 13 14 15 |
# 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) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# 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.)) 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) ⇒ Object
35 36 37 38 39 40 |
# 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 |