Ruby on rails 应用程序级别上的RoR捕获异常

Ruby 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 当然,它现在在传递给用户的控

对于特定的角色(用户组),我在活动记录的每个查找中都添加了: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
当然,它现在在传递给用户的控制器中引发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还有许多其他的救援行动方法,可能更适合您的问题……请看一下

我在该页面上只看到带救援处理程序的救援行动。对吗?