1234567891011121314151617181920212223242526272829303132 |
- # frozen_string_literal: true
- class ValidationErrorFormatter
- def initialize(error, aliases = {})
- @error = error
- @aliases = aliases
- end
- def as_json
- { error: @error.to_s, details: details }
- end
- private
- def details
- h = {}
- errors.details.each_pair do |attribute_name, attribute_errors|
- messages = errors.messages[attribute_name]
- h[@aliases[attribute_name] || attribute_name] = attribute_errors.map.with_index do |error, index|
- { error: 'ERR_' + error[:error].to_s.upcase, description: messages[index] }
- end
- end
- h
- end
- def errors
- @errors ||= @error.record.errors
- end
- end
|