|
|
- # 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
|