Почему мои параметры Rails объединяются? - PullRequest
0 голосов
/ 26 мая 2020

Я отправляю POST-запрос в свой Rails API со следующими параметрами:

  "user"=>{"first_name"=>"Gerry", "last_name"=>"Moen", "email"=>"gerrymoen@test.com", "addresses"=>[{"address_type"=>"home"}, {"address_line_1"=>"25609 Littel Island", "address_line_2"=>nil, "city"=>"Chill", "state"=>"CA", "zip"=>"12345", "address_type"=>"mailing"}]}

Однако, когда я проверяю параметры в своей конечной точке API, они выглядят так:

  "user"=>{"first_name"=>"Gerry", "last_name"=>"Moen", "email"=>"gerrymoen@test.com", "addresses"=>[{"address_type"=>"home", "address_line_1"=>"25609 Littel Island", "address_line_2"=>nil, "city"=>"Chill", "state"=>"CA", "zip"=>"12345"}, {"address_type"=>"mailing"}]}

Как видите, поля почтового адреса отправляются как часть домашнего адреса. Теперь я знаю, что вложенные атрибуты должны быть назначены как addresses_attributes. У меня есть это в моем методе user_params, чтобы справиться с этим.

        params[:user][:addresses_attributes] = params.dig(:user).delete(:addresses)
        params.require(:user).permit(....)

Но мой вопрос в том, что Rails делает за кулисами, чтобы переключать мои атрибуты адреса таким образом. Я не вижу ничего очевидного в моем коде, который это делает.

EDIT: Хорошо, нашел кое-что. Я распечатал неизмененные данные POST . Это выглядело так:

"user[first_name]=Gregorio&user[last_name]=Douglas&user[email]=gregoriodouglas%40test.com
&user[addresses][][address_type]=home&user[addresses][][address_line_1]=458%20Karlene%20Greens&user[addresses][][address_line_2]=&user[addresses][][city]=Superior&user[addresses][][state]=MT&user[addresses][][zip]=59872&user[addresses][][address_type]=mailing"

Я считаю, что причина объединения адресов заключалась в том, что они были отправлены как массив атрибутов ha sh. Я считаю, что для их правильного назначения мне нужно установить индекс в массиве. Или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...