由于我的测试(和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异常。
我想知道这是否是一种可接受的做法,如果没有,那么更好的解决方案可能是什么样的。
答案 0 :(得分:1)
如你所知,这很粗糙。它将捕获任何异常并返回您指定的JSON,尽管它可能不是ActiveRecord::RecordNotFound
错误。
我建议在ApplicationController中使用rescue_from ActiveRecord::RecordNotFound, with: :method_name
,它将挽救这种类型的错误并使用适当的JSON进行响应。