Я использую ActiveModel:: Serializer для настройки ответов JSON для моего API. Это прекрасно работает в большинстве случаев, за исключением случаев, когда он не смог успешно сохранить модель.
Например,
def create
def create
book = Book.new(book_params)
book.save
respond_with book, location: nil
end
end
Как я понимаю, действие response_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 в этом сценарии?