Rails JSON API - json不包含错误

时间:2017-09-20 13:01:00

标签: ruby-on-rails json serialization json-api

我正在渲染一系列ActiveRecord项目。它们中的每一个都通过了valid?方法 - 因此已经定义了错误。 我像这样呈现数组:

render json: array_of_objects

我设置ActiveModelSerializers.config.adapter = :json_api

但结果json缺少错误 - 它只包含对象的数据。

如何检索包含错误的json(每个一个或全部)项目?

1 个答案:

答案 0 :(得分:1)

当涉及如何处理验证错误时,JSON API规范非常模糊:

  

服务器可以选择在问题出现时立即停止处理   遇到,或者它可能继续处理并遇到多个   问题。例如,服务器可能会处理多个属性   然后在一个响应中返回多个验证问题。

     

当服务器遇到单个请求的多个问题时,   最常用的HTTP错误代码应该用在   响应。例如,400 Bad Request可能适合   多个4xx错误或500内部服务器错误可能是适当的   多个5xx错误。

可以包含错误对象 - 但它们应该包含在文档的顶层:

  

错误对象提供有关问题的其他信息   执行操作时遇到。错误对象必须是   作为由JSON API顶级错误键入的数组返回   文档。

ActiveModel :: Serializers JSON API Adapter不提供错误对象处理,因为处理各种用例会很复杂。

特别是您的情况,因为您似乎一次创建/修改多个记录。在创建它特别棘手的情况下,因为你需要将错误链接到导致错误的输入中的属性,因为没有id指向。

你可以推出自己的序列化器:

class PostSerializer < ActiveModel::Serializer
  attributes :title, :body, :errors

  def errors
    object.errors.full_messages if object.errors.any?
  end
end