在全球范围内允许强大的参数

时间:2019-02-19 17:37:34

标签: ruby-on-rails strong-parameters

是否有一种方法可以允许所有操作使用参数?我正在使用的应用程序具有功能标记系统,我希望可以通过查询字符串参数覆盖功能标记(以帮助测试)。我在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,但这将容易出错且重复。

1 个答案:

答案 0 :(得分:0)

感谢@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