【发布时间】:2014-10-17 22:01:47
【问题描述】:
我正在使用 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 响应?
【问题讨论】:
标签: ruby-on-rails json serialization ruby-on-rails-4 active-model-serializers