Отправленный массив параметров, разрешенный в сильных параметрах, исчезает - PullRequest
1 голос
/ 04 марта 2020

Возникли проблемы с сильными параметрами в API Rails 5.0.2. Я не могу опубликовать точный код, но параметры собраны в методе и затем используются в действии создания в контроллере.

def create
     render_json Model.create(create_params_method)
end

def create_params_method
     create_params = params.require(:model).permit(:name, array_of_ids: [])
     create_params
end

Когда я отправляю запрос, params содержит array_of_params параметр, но когда он проходит через метод params, он исчезает, и у меня просто есть имя. Попытка отследить, где / почему array_of_ids отклоняется, но пока безуспешно. Я постоянно использую стек для помощи и могу предоставить больше информации, если это необходимо, но я впервые задаю вопрос, так что терпите меня bear.

1 Ответ

0 голосов
/ 04 марта 2020

Поскольку params.require(:model).permit(:name, array_of_ids: []) делает, отфильтровывает mentioned params из received params, поэтому, если у вас есть что-то еще, оно пропадет. Например, если вы получите

user: {id: 1, name: 'sahil', last_name: 'grover', roles: [1,2,3], is_admin: true}

и ваш фильтр параметров будет

params.require(:user).permit(:id, :name, :last_name, roles: [])

, то вы получите в результате

{id: 1, name: 'sahil', last_name: 'grover', roles: [1,2,3]}

is_admin, поскольку он не указан в permitted params.

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