2014-10-22 25 views
1

我看到有config.action_controller.action_on_unpermitted_parameters = :raise动作控制器,但我不想运行异常。日志,因为我想要轨道4不允许的参数请求?

我需要运行我自己的方法。这是可能的?怎么样?

例如,如果我想在特殊SQL表中登录unpermitted_pa​​rameters。

回答

0

根据http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html

值可以是:日志上写上记录的消息或:提高募集的ActionController :: UnpermittedParameters例外。缺省值是:登录测试和开发环境,否则为false。

因此,它看起来就像你不能没有覆盖方法ActionController::Parameters#unpermitted_parameters!

原来这里是实现:

module ActionController 
    class Parameters < ActiveSupport::HashWithIndifferentAccess 
    def unpermitted_parameters!(params) 
     unpermitted_keys = unpermitted_keys(params) 
     if unpermitted_keys.any? 
     case self.class.action_on_unpermitted_parameters 
     when :log 
      name = "unpermitted_parameters.action_controller" 
      ActiveSupport::Notifications.instrument(name, keys: unpermitted_keys) 
     when :raise 
      raise ActionController::UnpermittedParameters.new(unpermitted_keys) 
     end 
     end 
    end 
    end 
end 

您可以添加另一种情况分支并实现你在那里的逻辑。