Глобально разрешить сильный параметр - PullRequest
0 голосов
/ 19 февраля 2019

Есть ли способ разрешить параметр для всех действий?Приложение, над которым я работаю, имеет систему флагов функций, и я хотел бы, чтобы флаги функций были переопределены с помощью параметров строки запроса (для помощи в тестировании).Я добавил что-то вроде следующего к 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, но это будет подвержено ошибкам и повторяется.

1 Ответ

0 голосов
/ 19 февраля 2019

Благодаря комментарию @ 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
...