【问题标题】:log as I want unpermitted parameters request with rails 4?记录我想要使用 rails 4 的未经许可的参数请求?
【发布时间】:2014-10-22 07:18:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails parameters actioncontroller


    【解决方案1】:

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

    这些值可以是 :log 以在记录器上写入消息或 :raise 以引发 ActionController::UnpermittedParameters 异常。默认值为:log in test and development environment,否则为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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 2013-04-14
      • 1970-01-01
      相关资源
      最近更新 更多