Для чего нужна эта линия и для чего она нужна? - PullRequest
0 голосов
/ 12 января 2020

Я изучаю Ruby на Rails и хочу узнать больше об этом:

params.require(:user).permit(:name, :email, :password, :password_confirmation)

1 Ответ

4 голосов
/ 12 января 2020

Это сильный параметр в Ruby на рельсах.

Это запрещает использование параметров Action Controller в массовом назначении Active Model до тех пор, пока они не будут явно перечислены.

Например, если в запросе отправляется атрибут местоположения и если вы не разрешаете * Параметр 1007 * в требовании, параметр location будет запрещен, а params запретит этот атрибут.

Как и следующий запрос в json

{
   "user": {
          "name" : "johnny dep",
          "location" : "hollywood"
   }
}

со следующим кодом в контроллере

params.require(:user).permit(:name)

Теперь это запретит атрибут местоположения. Проще говоря, это защитит ваш код rails от страшного мира inte rnet, где злоумышленники могут попытаться отправить дополнительные атрибуты на сервер rails.

Другой пример, если ваш запрос в json выглядит следующим образом

{
    "user": {
        "name": "johnny dep",
        "email": "johnny@gmail.com",
        "qualification": {
            "name": "bachelor in arts",
            "college": "trinity"
        }
    }
}

Ваш контроллер может разрешить дополнительные параметры для квалификации, используя следующий код

params.require(:user).permit(:name, :email, qualification: [:name, :college])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...