class JoyfulJsonapi::ErrorSerializer

Public Class Methods

new(model) click to toggle source
# File lib/joyful_jsonapi/error_serializer.rb, line 5
def initialize(model)
  @model = model
  @model.valid?
end

Public Instance Methods

serializable_hash() click to toggle source
# File lib/joyful_jsonapi/error_serializer.rb, line 10
def serializable_hash
  { errors: errors_for(@model) }
end
serialized_json(options = nil) click to toggle source
# File lib/joyful_jsonapi/error_serializer.rb, line 14
def serialized_json(options = nil)
  serializable_hash.to_json(options)
end

Private Instance Methods

build_hash_for(field, error_message) click to toggle source
# File lib/joyful_jsonapi/error_serializer.rb, line 32
def build_hash_for(field, error_message)
  {}.tap do |hash|
    hash[:status] = "422"
    hash[:source] = { pointer: "/data/attributes/#{field}" }
    hash[:detail] = error_message
  end
end
build_hashes_for(field, errors) click to toggle source
# File lib/joyful_jsonapi/error_serializer.rb, line 26
def build_hashes_for(field, errors)
  errors.map do |error_message|
    build_hash_for(field, error_message)
  end.flatten
end
errors_for(resource) click to toggle source
# File lib/joyful_jsonapi/error_serializer.rb, line 20
def errors_for(resource)
  resource.errors.messages.flat_map do |field, errors|
    build_hashes_for(field, errors)
  end
end