Ruby on rails 应用程序级别上的RoR捕获异常
对于特定的角色(用户组),我在活动记录的每个查找中都添加了:readonlyRuby on rails 应用程序级别上的RoR捕获异常,ruby-on-rails,error-handling,Ruby On Rails,Error Handling,对于特定的角色(用户组),我在活动记录的每个查找中都添加了:readonly def self.find(*args) if User.current_user.has_role? 'i_can_only_read' with_scope({:find => {:readonly => true}}) do result = super *args end end end 当然,它现在在传递给用户的控
def self.find(*args)
if User.current_user.has_role? 'i_can_only_read'
with_scope({:find => {:readonly => true}}) do
result = super *args
end
end
end
当然,它现在在传递给用户的控制器中引发ActiveRecord::ReadOnlyRecord异常;不太好
我能在一个地方发现这种错误吗?像production.rb还是application.rb?或者我可以为此错误配置一个特定的错误页面吗?是的,只需在公共中覆盖rescue\u action\u,如下所示:
class ApplicationController < ActionController::Base
...
def rescue_action_in_public(exception)
case exception
when ActiveRecord::ReadOnlyRecord
# DO SOME LOGIC HERE
end
end
end
end
class ApplicationController
这将在“生产”中执行您的操作,但在“开发”中留下信息丰富的堆栈跟踪
Rails还有许多其他的救援行动方法,可能更适合您的问题……请看一下我在该页面上只看到带救援处理程序的救援行动。对吗?