Заголовок ответа об ошибке ActiveResource не возвращает тело - PullRequest
0 голосов
/ 08 мая 2009

Я спрашивал что-то похожее на это раньше и не получил ответа, вот сокращенная версия

У меня есть модель активного ресурса пользователя. Я просто звоню своему клиенту в сервис

response = User.find(id).put(:activate, :activation_code => activation_code)

Если в сервисе возникли ошибки (т. Е. Код активации не совпадает), я возвращаю

render :xml => @user.errors, :status => :unprocessable_entity

Таким образом, любой ответ об ошибке с активным ресурсом должен обрабатываться Resue

rescue ActiveResource::ResourceInvalid

Это все нормально и прекрасно, за исключением того, что ответ при первоначальном вызове не устанавливается. У меня нет тела от этого ответа вообще, поэтому @ user.errors никогда не возвращается. Что мне нужно, чтобы вернуть нужный предмет? кроме возврата 200. Любой код ответа 'success' заполняет переменную ответа штрафом. Но всегда возвращать 200 кажется ошибкой.

1 Ответ

1 голос
/ 08 мая 2009

Так что я немного ошибся там, в блоке спасения

rescue ActiveResource::ResourceInvalid => e

е заселяется. Услуга возвращается

render :xml => @user.errors, :unprocessable_entity

Итак, e.response.body содержит ошибки xml. Я тогда на моей стороне клиента просто говорю

user.errors.from_xml(e.response.body)

и пользователь теперь заполнен правильными ошибками.

...