Add `details` to error response for `POST /api/v1/accounts` in REST API (#15803)
parent
b4cb8c3c83
commit
9aa37b32c3
@ -0,0 +1,32 @@
|
||||
# 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
|
Loading…
Reference in new issue