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 尝试一下,告诉我们结果:) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |