2014-10-22 60 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 

您可以添加另一種情況分支並實現你在那裏的邏輯。