Serializando o hash de erros no ActiveModel :: Serializer
Estou usando o ActiveModel :: Serializer para personalizar as respostas JSON para minha API. Isso funciona bem na maioria dos casos, exceto quando falha ao salvar um modelo com êxito.
Por exemplo,
def create
def create
book = Book.new(book_params)
book.save
respond_with book, location: nil
end
end
Pelo que entendi, a ação respond_with basicamente executará um código parecido com este (a fim de gerar a resposta).
if resource.errors.any?
render json: {:status => 'failed', :errors => resource.errors}
else
render json: {:status => 'created', :object => resource}
end
Isso corresponde ao que estou vendo - se meu modelo falhar ao salvar com êxito, vejo o hash dos erros como resposta. No entanto, não consigo descobrir como especifico um serializador para o hash de erros.
Tentei definir um ErrorsSerializer e se eu executar
ActiveModel::Serializer.serializer_for(book.errors)
no console, parece encontrar meu serializador, mas ele não é usado. Como personalizo a resposta JSON neste cenário?