我可以忽略一个`过滤链停止为:set_user呈现或重定向`?

时间:2016-07-10 15:57:01

标签: ruby-on-rails activerecord exception-handling

由于我的测试(和dev输出)有点失控,我修改了set_user的普通UsersController过滤器,如

def set_user
  @user = User.find(params[:id]) rescue render(json: { message: 'User not found' }, status: 404)
end

(粗略地)摆脱ActiveRecord::RecordNotFound异常并继续渲染普通的旧404消息。现在,除了关于过滤器暂停处理的警告之外,似乎没有可见的副作用,我可以避免在我的所有规范示例中挽救AR异常。

我想知道这是否是一种可接受的做法,如果没有,那么更好的解决方案可能是什么样的。

1 个答案:

答案 0 :(得分:1)

如你所知,这很粗糙。它将捕获任何异常并返回您指定的JSON,尽管它可能不是ActiveRecord::RecordNotFound错误。

我建议在ApplicationController中使用rescue_from ActiveRecord::RecordNotFound, with: :method_name,它将挽救这种类型的错误并使用适当的JSON进行响应。