Module: JSONAPIHelpers::Serializers::ModelError
- Defined in:
- lib/jsonapi_helpers/serializers/model_error.rb
Constant Summary collapse
- KNOWN_ERROR_TYPES =
Set.new(%i( accepted blank confirmation empty equal_to even exclusion greater_than greater_than_or_equal_to inclusion invalid less_than less_than_or_equal_to not_a_number not_an_integer odd other_than present required taken too_long too_short wrong_length )).freeze
Class Method Summary collapse
- .error_message_for(model_errors, field, error) ⇒ Object
- .error_meta_for(error) ⇒ Object
- .error_type_for(error_type) ⇒ Object
- .serialize(model, key_transform: JSONAPIHelpers.config.key_transform) ⇒ Object
Class Method Details
.error_message_for(model_errors, field, error) ⇒ Object
49 50 51 52 53 54 |
# File 'lib/jsonapi_helpers/serializers/model_error.rb', line 49 def self.(model_errors, field, error) = error.fetch(:error) return if .is_a?(String) # expects it to already be translated model_errors.(field, , count: error[:count]) end |
.error_meta_for(error) ⇒ Object
56 57 58 59 60 61 62 63 |
# File 'lib/jsonapi_helpers/serializers/model_error.rb', line 56 def self.(error) = { type: error_type_for(error.fetch(:error)) } [:count] = error[:count] if error[:count] [:value] = error[:value] if error[:value] end |
.error_type_for(error_type) ⇒ Object
65 66 67 68 |
# 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) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# 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: (model.errors, field, error), meta: (error) } end end end |