繁体   English   中英

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

[英]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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM