class ActiveResponse::Responders::JsonApi
Public Instance Methods
collection(**opts)
click to toggle source
Calls superclass method
ActiveResponse::Responders::JSON#collection
# File lib/active_response/responders/json_api.rb, line 8 def collection(**opts) opts[:adapter] = :json_api super end
invalid_resource(**opts)
click to toggle source
# File lib/active_response/responders/json_api.rb, line 13 def invalid_resource(**opts) controller.render json: {errors: formatted_errors(opts[:resource].errors)}, status: :unprocessable_entity end
resource(**opts)
click to toggle source
Calls superclass method
ActiveResponse::Responders::JSON#resource
# File lib/active_response/responders/json_api.rb, line 17 def resource(**opts) opts[:adapter] = :json_api super end
Private Instance Methods
error_code(errors, key, index)
click to toggle source
# File lib/active_response/responders/json_api.rb, line 24 def error_code(errors, key, index) "value_#{errors.details[key][index][:error]}".upcase end
formatted_error(errors, key)
click to toggle source
# File lib/active_response/responders/json_api.rb, line 28 def formatted_error(errors, key) errors.full_messages_for(key).map.with_index { |m, i| formatted_error_hash(key, error_code(errors, key, i), m) } end
formatted_error_hash(key, code, message)
click to toggle source
# File lib/active_response/responders/json_api.rb, line 32 def formatted_error_hash(key, code, message) { code: code, message: message, status: Rack::Utils::HTTP_STATUS_CODES[422], source: {parameter: key} } end
formatted_errors(errors)
click to toggle source
# File lib/active_response/responders/json_api.rb, line 41 def formatted_errors(errors) case errors when Array errors.map { |error| formatted_errors(error) }.flatten when ActiveModel::Errors errors.keys.reduce([]) do |array, key| array.concat(formatted_error(errors, key)) end end end