module JSONAPIHelpers::Serializers::ModelError
Constants
- KNOWN_ERROR_TYPES
Public Class Methods
error_message_for(model_errors, field, error)
click to toggle source
# File lib/jsonapi_helpers/serializers/model_error.rb, line 49 def self.error_message_for(model_errors, field, error) message = error.fetch(:error) return message if message.is_a?(String) # expects it to already be translated model_errors.generate_message(field, message, count: error[:count]) end
error_meta_for(error)
click to toggle source
# File lib/jsonapi_helpers/serializers/model_error.rb, line 56 def self.error_meta_for(error) meta = { type: error_type_for(error.fetch(:error)) } meta[:count] = error[:count] if error[:count] meta[:value] = error[:value] if error[:value] meta end
error_type_for(error_type)
click to toggle source
# File lib/jsonapi_helpers/serializers/model_error.rb, line 65 def self.error_type_for(error_type) return error_type if KNOWN_ERROR_TYPES.include?(error_type) :invalid end
serialize(model, key_transform: JSONAPIHelpers.config.key_transform)
click to toggle source
# File lib/jsonapi_helpers/serializers/model_error.rb, line 34 def self.serialize(model, key_transform: JSONAPIHelpers.config.key_transform) model.errors.details.flat_map do |field, errors| errors.map do |error| attribute_name = KeyTransform.call(field.to_s, key_transform: key_transform) { status: 422, source: { pointer: "/data/attributes/#{attribute_name}" }, detail: error_message_for(model.errors, field, error), meta: error_meta_for(error) } end end end