ActiveResource错误响应标头不返回正文

时间:2009-05-07 22:16:10

标签: ruby-on-rails activeresource

之前我问了类似的东西,从来没有得到答案,这是一个缩短的版本

我有一个User activeresource模型。我在我的客户端上对服务进行了简单的调用

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

如果服务上有错误(即,activation_code不匹配),我返回

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

因此,显然任何有关activeresource的错误响应都必须由resue处理

rescue ActiveResource::ResourceInvalid

除了初始调用中的响应没有设置外,这一切都很好。我根本没有来自该响应的正文,因此永远不会返回@ user.errors。我需要什么来获得适当的物体?除了返回200.任何“成功”响应代码都会很好地填充响应变量。但总是返回200似乎是一个错误。

1 个答案:

答案 0 :(得分:1)

所以我在那里有点误,在救援区

rescue ActiveResource::ResourceInvalid => e

e填充。服务返回

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

所以e.response.body包含错误xml。然后我在客户端就说了

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

现在用户填充了正确的错误。