catstodon/app/lib/validation_error_formatter.rb

32 lines
651 B
Ruby

# 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