ruby-on-rails – 在ActiveModel :: Serializer中排序错误哈希

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在ActiveModel :: Serializer中排序错误哈希前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ActiveModel :: Serializer自定义我的API的 JSON响应.这在大多数情况下工作正常,除非成功@R_505_301@失败.

例如,

def create
  def create
    book = Book.new(book_params)
    book.save

    respond_with book,location: nil
  end
end

据了解,respond_with操作将基本上执行看起来像这样的代码(为了生成响应).

if resource.errors.any?
    render json: {:status => 'Failed',:errors => resource.errors}
  else
    render json: {:status => 'created',:object => resource}
  end

这与我正在看到的匹配 – 如果我的模型无法成功保存,我会看到错误哈希作为响应.但是,我无法弄清楚如何为错误哈希指定序列化程序.

我尝试定义一个ErroRSSerializer,如果我运行

ActiveModel::Serializer.serializer_for(book.errors)

在控制台中,似乎找到了我的序列化程序,但它没有被使用.在这种情况下如何自定义JSON响应?

解决方法

我相信在这种情况下的问题是,对于失败的状态,您不会使用对象调用render,如创建状态.

调用render时可以使用一个自定义的Serializer,在这种情况下你可以使用类似的东西

if resource.errors.any?
  render serializer: ErrorSerializer,json: {:status => 'Failed',:errors => resource.errors}
else
  render json: {:status => 'created',:object => resource}
end

尝试一下,告诉我们结果:)

猜你在找的Ruby相关文章