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

问题描述 投票:0回答:1

是否有办法允许所有行动的参数?我正在处理的应用程序有一个功能标记系统,我希望通过查询字符串参数覆盖功能标记(以帮助测试)。我在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

这对于不使用params的操作很有效,但是当一个动作出现时我会得到如下错误:

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

看来params.permitparams.require预计只会在任何特定行动中被召唤一次。那是对的吗?对于像这样的跨领域关注,有没有办法全球白名单列出一组参数?我可以更新每次调用params也包括:feature_flags,但这将是容易出错和重复的。

ruby-on-rails strong-parameters
1个回答
0
投票

感谢@ tadman关于删除param一次使用的评论我得到了这个工作。更新的代码如下所示:

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
© www.soinside.com 2019 - 2024. All rights reserved.