Сильные параметры Rails вызывают исключение или регистрируют настройки контроллера?

После прочтения документации единственное место, которое я могу увидеть для настройки поднятия Strong Parameters или настройки журнала, - это:

config.action_controller.action_on_unpermitted_parameters = :raise

Я хочу установить это :raise для моих контроллеров Public API, чтобы я мог использовать:

  rescue_from ActionController::UnpermittedParameters do |e|
    render json: {error: e.message, params: e.params}, status: :unprocessable_entity
  end

Чтобы потребители API могли понять, что не так с их запросом, и исправить это соответствующим образом.

Но для других контроллеров, я бы предпочел, чтобы недопустимые параметры регистрировались (и не работали молча), чтобы не ломать вещи без необходимости для любых злонамеренных вставок полей формы в DOM. Можно ли это сделать? Если я добавлю спасение в эти контроллеры, то обновление будет прервано.

1 ответ

Да, вы можете сделать это с помощью следующего:

white_list = [:name, :job, :id]

params.reject! {|k,_| !white_list.include?(k)}
Другие вопросы по тегам