Сильные параметры в Rails - предложение Require игнорируется - PullRequest
0 голосов
/ 18 ноября 2018

Короче говоря, запрос POST делается на /games.

Даже если требование сильных параметров выглядит следующим образом:

def game_params
  params.require(:game).permit(:name)
end

JSON-запрос без game объекта, просто поле name фактически проходит.

{
    "name": "Game of Life"
}

Что еще более странно, регистратор рельсов фактически делает игровой объект! Бревно выглядит как

Parameters: { "name" => "Game of life", "game" => {"name" => "Game of life"}}

подразумевает, что игровой объект создается. Если единственным параметром передачи является , а не name, Rails правильно выдаст 400.

Все документы, которые я прочитал, предполагают, что объект game в JSON является обязательным условием, но здесь он, похоже, игнорируется.

Рекомендации

1 Ответ

0 голосов
/ 26 ноября 2018

Итак, обновление для всех, кому нужно было это знать.

Ответ, после кучки копаний, - -

Если в вашем предложении require есть имя объекта, совпадающее с именем вашего контроллера, Rails сделает этот объект необязательным. Вы можете отключить это поведение в ваших инициализаторах.

Источник: https://api.rubyonrails.org/v5.2.1/classes/ActionController/ParamsWrapper.html

...