首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails 3 REST:活动源码销毁验证

rails 3 REST:活动源码销毁验证
EN

Stack Overflow用户
提问于 2012-01-03 21:34:56
回答 2查看 1.1K关注 0票数 2

大家好,我正在使用active_resource,并有下一个问题。有时需要销毁验证示例

代码语言:javascript
复制
 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不能处理这样的响应,失败的原因是

代码语言:javascript
复制
ActiveResource::ResourceInvalid: Failed.  Response code = 422.  Response message = .

处理这种情况的最好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-04 19:43:31

到目前为止,我还没有使用过ActiveResource,但是我认为这是实现销毁方法的正确方式……或者至少这是剩下的方法。

你说ActiveResource不会处理这样的响应,但实际上恰恰相反。由于422 (无法处理的实体)响应,引发了ActiveResource::ResourceInvalid错误。

更多信息请点击这里:API ActiveResource

下面是资源错误部件的内容:

以下HTTP响应代码也会导致这些异常:

..。

422 - ActiveResource::ResourceInvalid (通过另存为验证错误保存)

总而言之,这些错误允许您根据返回的状态代码准确地处理和行为。例如,无论响应是503 (服务不可用)还是422 (无法处理的实体),您的行为方式都不同。在第一种情况下,你可能会说“稍后再试”,而在第二种情况下,你可能会说“由于返回的消息,不能这样做”。

票数 1
EN

Stack Overflow用户

发布于 2012-01-10 00:13:21

所以我就这样做了

代码语言:javascript
复制
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
 end
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8713070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档