之前我问了类似的东西,从来没有得到答案,这是一个缩短的版本
我有一个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似乎是一个错误。
答案 0 :(得分:1)
所以我在那里有点误,在救援区
rescue ActiveResource::ResourceInvalid => e
e填充。服务返回
render :xml => @user.errors, :unprocessable_entity
所以e.response.body包含错误xml。然后我在客户端就说了
user.errors.from_xml(e.response.body)
现在用户填充了正确的错误。