动作控制器中的猴子补丁 unpermitted_parameters

Monkey patch unpermitted_parameters in actioncontroller

我正在查看 rails 6 中的一个 PR,他们在其中为不允许的参数添加了颜色 属性。我发现这对我的应用程序来说非常必要,因为我们通常有很长的日志。我想在我的 Rails 5 应用程序

中包含相同的功能

我在我的应用程序中创建了一个 ext 文件夹并添加了以下代码

并在初始化程序文件夹中

require "#{Rails.root}/app/ext/action_controller_override.rb"

file_name: action_controller_override.rb

ActionController::LogSubscriber.class_eval do

  def unpermitted_parameters(event)
      debug do
        unpermitted_keys = event.payload[:keys]
        color("Unpermitted parameter#{'s' if unpermitted_keys.size > 1}: #{unpermitted_keys.map { |e| ":#{e}" }.join(", ")}", RED)
      end
    end

end

但是上面的代码给我错误。

无法记录 unpermitted_parameters.action_controller 事件。 NameError:未初始化的常量 RED

所以,任何人都可以阐明它并告诉我哪里出错了

我建议将您的代码作为 .rb 文件保存在 config/initializers 文件夹下,该文件将打开 class 并根据您的代码覆盖。

另外,看看3 ways to monkey patch

终于找到解决方法

"Unpermitted parameter#{'s' if unpermitted_keys.size > 1}: #{unpermitted_keys.map { |e| ":#{e}" }.join(", ")}".green

关键字green由colorize给出gem