[RUBY] Je ne comprends pas la méthode devise_parameter_sanitizer, je vais donc l'afficher ici.

La méthode qui est sortie quand je copiais des sutras sur Rails s'est avérée être "ce que c'est", donc je vais la revoir et l'écrire comme une sortie et un mémorandum.

Qu'est-ce que devise_parameter_sanitizer?

devise_parameter_sanitizer est une méthode fournie par la gemme appelée devise. C'est une méthode pour obtenir des paramètres (nom, mail, etc.) à partir de demandes telles que la connexion et la nouvelle inscription lors de la mise en œuvre de la fonction de gestion des utilisateurs.

À propos des paramètres

Les paramètres sont des données transmises en externe incluses dans la demande. Elles sont traitées par le contrôleur et enregistrées comme données dans les colonnes du tableau via le modèle. S'agit-il de quelque chose comme des données envoyées depuis le champ de saisie du navigateur?

Pour saisir des données dans le formulaire et le soumettre en tant que demande, écrivez la description suivante.

index.html


#C'est l'histoire de l'expéditeur
<%= form_with url:”URL”, method: :post, local: true do |form| %>
<%= form.text_field :content %>
<% end %>

Je pense que c'est quelque chose qui vous permet de remplir un formulaire et d'envoyer des données à une URL. La partie ": content" de la deuxième ligne devient params, et en tant que "params [: content]" Ce sont les données transmises de l'extérieur au contrôleur.

C'était l'histoire de l'expéditeur, mais j'aimerais aussi penser au destinataire. Le destinataire peut être limité à recevoir uniquement les paramètres avec la clé spécifiée (nom de colonne). C'est ce qu'on appelle un paramètre fort. La description est la suivante.

players_controller.rb


#C'est l'histoire du destinataire
params.require(:player).permit(:name, :age)

Dans la description ci-dessus, seules les données de la clé (colonne) «nom» et de la clé (colonne) «âge» du modèle Player seront reçues de la demande. Spécifiez la table avec des colonnes dans require. Si la demande contient des données «hauteur», «vitesse» et «défense» en plus des clés «nom» et «âge», elles ne seront pas reçues.

Revenez à la méthode devise_parameter_sanitizer.

Comment décrire est comme suit.

application_controller.rb


#Pour concevoir
devise_parameter_sanitizer.permit(:sign_up, keys: [:email])

Etant donné que devise_parameter_sanitizer est une méthode de conception, le modèle est un modèle utilisateur créé par devise, donc l'exigence ci-dessus n'est pas décrite. Le paramètre (données) que vous obtenez lorsque vous vous inscrivez signifie «e-mail».

Quand j'ai écrit le code avec ce devise_parameter_sanitizer, j'ai pensé que le joyau de devise était assez pratique pour implémenter la fonction de connexion. Vous pouvez vous enregistrer et vous connecter sans créer de fonction de connexion à partir de zéro. En mettant les informations nécessaires (colonnes) dans devise_parameter_sanitizer, devise fera le reste dans une certaine mesure, donc je ne suis pas encore sûr, mais je pense que c'est une méthode très pratique.

finalement

Bien que j'aie écrit cet article, il y a encore des choses que je ne comprends pas. Je vous serais reconnaissant de bien vouloir me dire si quelque chose ne va pas avec cette reconnaissance. Merci.

Articles référencés

Un ingénieur actif explique comment utiliser la méthode require / permit de Rails [pour les débutants] https://techacademy.jp/magazine/22078

Recommended Posts

Je ne comprends pas la méthode devise_parameter_sanitizer, je vais donc l'afficher ici.
Je ne me souviens pas de l'entrée / sortie du fichier texte en Java, alors je l'ai résumé.
Sortie sur la méthode Partie 1
Comprendre la méthode d'assistance form_with
Je ne suis pas sûr du traitement parallèle Java
[Vue Action :: Modèle manquant] Je n'ai pas compris la signification de l'instruction d'erreur, alors je l'ai recherchée.
Je n'ai pas compris la signification de DI, @Autowired ou injection, alors j'ai recherché.
J'ai essayé de comprendre comment la méthode des rails "redirect_to" est définie
J'ai essayé de comprendre comment la méthode des rails "link_to" est définie
"RSpec ne fonctionne pas!" La cause était le printemps, alors je l'ai étudiée.
J'ai essayé d'expliquer la méthode