加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 22:01:39 所属栏目:百科 来源:网络整理
导读:我正在使用ActiveModel :: Serializer自定义我的API的 JSON响应.这在大多数情况下工作正常,除非成功保存模型失败. 例如, def create def create book = Book.new(book_params) book.save respond_with book,location: nil endend 据了解,respond_with操作将
我正在使用ActiveModel :: Serializer自定义我的API的 JSON响应.这在大多数情况下工作正常,除非成功保存模型失败.

例如,

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读