我正在渲染一系列ActiveRecord项目。它们中的每一个都通过了valid?
方法 - 因此已经定义了错误。
我像这样呈现数组:
render json: array_of_objects
我设置ActiveModelSerializers.config.adapter = :json_api
。
但结果json缺少错误 - 它只包含对象的数据。
如何检索包含错误的json(每个一个或全部)项目?
答案 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