Question

J'utilise ActiveRecord pour conserver des informations sur les utilisateurs. La classe User contient les méthodes, les setters, les getters, et quelques autres méthodes load (), insert (), update () et delete (). Mais j’ai du mal à décider si d’autres méthodes doivent être incluses dans la classe User ou gérées par des collaborateurs.

Voici un exemple:

Un utilisateur peut demander plusieurs transactions nécessitant une confirmation. Ceci est traité de manière conventionnelle - envoyer un email à l'utilisateur avec un lien; cliquer sur le lien confirme que l'utilisateur souhaite effectivement que la transaction se poursuive. Un hachage de la clé de vérification et sa date / heure d'expiration sont conservés dans l'enregistrement utilisateur.

Où devrais-je tracer la ligne dans ce processus? Un collaborateur devrait-il gérer la vérification (par exemple, en prenant la clé de vérification en texte brut de la chaîne de requête et en acceptant un objet Utilisateur en tant que paramètre)? Ou cela devrait-il être géré en interne par la classe User (en passant la clé de vérification en texte brut dans un appel de méthode)?

La vérification suivante a bien sûr pour conséquence que la transaction se poursuivrait nécessitant une mise à jour de l'enregistrement actif. Là, il me semble que la classe User doit en assumer la responsabilité.

Des suggestions?

Était-ce utile?

La solution

Vous devez déléguer cette tâche à un collaborateur qui gère une table confirmations .

Vous utiliseriez le modèle Confirmation pour suivre toutes les exigences de confirmation. Le modèle appartiendra à utilisateur , et gérera le hachage de confirmation et l'action à confirmer (par exemple, activation_compte , mot_de_passe_changement ou change_email etc.).

Le contrôleur Confirmation serait chargé de valider le hachage de confirmation et de chaîner l'action appropriée sur le modèle approprié (par exemple, activate_account - > user.activate ( ) , change_password - > user.setPassword () etc.) et supprimez le Confirmation du confirmations en cas de succès.

Cela permettra une meilleure séparation de la logique et vous permettra de mieux évoluer, par exemple. pour recevoir plus d'une confirmation en attente pour un utilisateur donné (par exemple, confirmation de changer le mot de passe et confirmation de changer quelque chose d'autre.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top