[RUBY] Pourquoi vous avez besoin d'attr_accessor et pourquoi vous ne l'avez pas (Merci à Rails): Mémorandum du didacticiel Rails - Chapitre 9

ʻAttr_accessor` qui est sorti avant Je n'ai pas beaucoup compris, alors j'ai cherché

Ce que j'ai compris

--Rôle de ʻattr_accessor`

C'est celui qui a trébuché

J'ai lu deux lignes et j'ai voulu abandonner le reste

L'attribut Remember_digest a déjà été ajouté au modèle User, mais l'attribut Remember_token n'a pas encore été ajouté. Par conséquent, il est nécessaire de rendre le jeton accessible à l'aide de la méthode user.remember_token et d'implémenter le jeton sans le stocker dans la base de données. Par conséquent, nous allons résoudre ce problème par la même méthode que l'implémentation du mot de passe effectuée en 6.3. À ce moment-là, j'ai utilisé l'attribut de mot de passe virtuel et l'attribut secure password_digest sur la base de données. L'attribut de mot de passe virtuel a été créé automatiquement avec la méthode has_secure_password, mais cette fois, vous devez écrire vous-même le code Remember_token. Pour implémenter cela, créez un attribut "virtuel" en utilisant l'attr_accessor mentionné dans 4.4.5. (Tutoriel Rails 6e édition)

Comprendre petit à petit

L'attribut Remember_digest a déjà été ajouté au modèle User, mais l'attribut Remember_token n'a pas encore été ajouté.

Attributs existants dans le modèle utilisateur

User.attribute_names
=> ["id", "name", "email", "created_at", "updated_at", "password_digest", "remember_digest"]

Il n'y a pas d'attribut Remember_token

Qu'est-ce que ʻattr_accessor`?

Utilisé pour définir des attributs lisibles et inscriptibles

En définissant ʻattr_accessor: Remember_token Définissez l'attribut Remember_token pour un objet de la classe User ʻUser.remember_token et attributs de référence ʻUser.remember_token = attribution d'attributs comme "jeton" Pourront

J'ai fait référence à ce qui suit Qu'est-ce que l'attr_accessor de Ruby? [Traduction japonaise]

Je n'ai jamais fait ʻattr_accessor: name ou ʻattr_accessor: email

J'ai utilisé ʻuser.name, ʻuser.email jusqu'à présent Je n'avais jamais été au courant de ʻattr_accessor`

À propos de ça A ceux qui sont entrés depuis Rails [attr_accessor]?

Dans le processus de `` rails générer un modèle ... `et de migration Les rails semblaient faire la même chose sans permission

Le point important était "ne pas enregistrer dans la base de données"

Par conséquent, il est nécessaire de rendre le token accessible à l'aide de la méthode user.remember_token et d'implémenter le token sans le stocker dans la base de données. ... Pour implémenter cela, créez un attribut "virtuel" en utilisant l'attr_accessor mentionné dans 4.4.5.

Remember_token n'est pas enregistré dans DB En d'autres termes, sans utiliser «les rails génèrent un modèle ...» ou la migration Je comprends que j'utilise ʻattr_accessor` parce que je veux ajouter un nouvel attribut

Au fait ʻAttr_accessor: Remember_token` est défini

User.attribute_names
=> ["id", "name", "email", "created_at", "updated_at", "password_digest", "remember_digest"]

Et "Remember_token" ne sont pas inclus comme attributs de l'objet

user.remember_token = "token"
=> "token"
>> user.remember_token
=> "token"

Peut être traité comme un attribut d'objet Est-ce là l'attribut "" virtuel ""?

Recommended Posts

Pourquoi vous avez besoin d'attr_accessor et pourquoi vous ne l'avez pas (Merci à Rails): Mémorandum du didacticiel Rails - Chapitre 9
Registres du didacticiel Rails et mémorandum n ° 0
Points à retenir et concepts dans le didacticiel Ruby on Rails
Pourquoi vous avez besoin de bundle exec
Jusqu'à l'introduction des polices dans Rails
A vous qui avez absolument besoin de retour en arrière
Enregistrement du tutoriel Rails et mémorandum n ° 1 "De l'installation au déploiement hello_app + gestion des erreurs"