【发布时间】:2019-02-19 17:37:33
【问题描述】:
有没有办法允许所有操作的参数?我正在开发的应用程序有一个功能标志系统,我希望可以通过查询字符串参数覆盖功能标志(以帮助测试)。我在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.permit 或params.require 对于任何给定的操作只会被调用一次。那是对的吗?有没有办法为这样的横切关注点全局白名单一组参数?我可以更新对params 的每次调用以包括:feature_flags,但这会容易出错且重复。
【问题讨论】:
-
您可能希望在使用后将其从
params中删除。这样就不会干扰其他检查。 -
不错!这最终奏效了。我稍微调整了我的代码以使用
params.to_unsafe_h[:feature_flags]来获取标志,然后根据您的建议,我使用:params.reject! { |key| key == "feature_flags" }清理它们。你想发帖作为答案,以便我给你信用吗? -
我想你已经弄清楚了细节,所以值得在这里添加一个自我回答。
标签: ruby-on-rails strong-parameters