大家好,我正在使用active_resource,并有下一个问题。有时需要销毁验证示例
def destroy
if @user.destroy
head :ok
else
respond_with(@user)
end
end在少数情况下不能删除用户模型。如果未删除,则验证后@user包含错误before_delete和响应器将其序列化,就像=> {\"errors\":{\"id\":[\"Cannot delete user with orders\"]}}一样
但是active_resource不能处理这样的响应,失败的原因是
ActiveResource::ResourceInvalid: Failed. Response code = 422. Response message = .处理这种情况的最好方法是什么?
发布于 2012-01-04 19:43:31
到目前为止,我还没有使用过ActiveResource,但是我认为这是实现销毁方法的正确方式……或者至少这是剩下的方法。
你说ActiveResource不会处理这样的响应,但实际上恰恰相反。由于422 (无法处理的实体)响应,引发了ActiveResource::ResourceInvalid错误。
更多信息请点击这里:API ActiveResource
下面是资源错误部件的内容:
以下HTTP响应代码也会导致这些异常:
..。
422 - ActiveResource::ResourceInvalid (通过另存为验证错误保存)
总而言之,这些错误允许您根据返回的状态代码准确地处理和行为。例如,无论响应是503 (服务不可用)还是422 (无法处理的实体),您的行为方式都不同。在第一种情况下,你可能会说“稍后再试”,而在第二种情况下,你可能会说“由于返回的消息,不能这样做”。
发布于 2012-01-10 00:13:21
所以我就这样做了
module ActiveResource
class Base
def destroy_with_validation
begin
destroy
rescue ActiveResource::ResourceInvalid=>error
@remote_errors = error
load_remote_errors(@remote_errors, true)
return false
end
end
endhttps://stackoverflow.com/questions/8713070
复制相似问题