全局允许强参数

Globally permit a strong param

有没有办法允许一个参数用于所有操作?我正在开发的应用程序有一个功能标志系统,我希望可以通过查询字符串参数覆盖功能标志(以帮助测试)。我在 application_controller:

中添加了如下内容
before_action :apply_feature_flag_overrides

def apply_feature_flag_overrides
  overrides = params.permit![:feature_flags]
  current_user.feature_flag_overrides = overrides
end

这对于不使用参数的操作来说工作正常,但是当操作使用时,我会收到如下错误:

ActionController::UnpermittedParameters at /upcoming_posts
found unpermitted parameter: :feature_flags

看来 params.permitparams.require 对于任何给定操作预计只会被调用一次。那是对的吗?有没有办法在全局范围内为这样的横切关注点列出一组参数?我可以更新对 params 的每次调用以也包括 :feature_flags 但这将是容易出错和重复的。

多亏了@tadman 关于删除使用过的参数的评论,我才开始工作。更新后的代码如下所示:

before_action :apply_feature_flag_overrides

def apply_feature_flag_overrides
  overrides = params.to_unsafe_h[:feature_flags]
  current_user.feature_flag_overrides = overrides
  params.reject! { |key| key == "feature_flags" }
end