日志作为我想要的未经允许的参数请求与rails 4



我读到有config.action_controller.action_on_unpermitted_parameters = :raise操作控制器,但我不想运行引发异常。

我需要运行我自己的方法。有可能吗?怎样

例如,如果我想登录特殊的SQL表unmitted_parameters。

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

值可以是:log以在记录器上写入消息,也可以是:raise以引发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

您可以添加另一个case分支,并在那里实现您的逻辑。

最新更新