L'essentiel de Ruby on Rails

Utiliser les concerns

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Grâce aux concerns, vous serez en mesure de mutualiser deux codes qui se ressemblent, par exemple celui des models Topic et TopicEntry.
03:26

Transcription

Avez-vous remarqué comment nous avons dupliqué les validations au niveau des deux modèles « topic » et « topic answer » ? Nous allons voir dans cette vidéo comment remédier à cette duplication grâce au concern. Peut-être avez-vous remarqué ce dossier « concerns » au sein de votre dossier « models ». Créez-y un nouveau fichier. Appelez-le « topicable.rb ». La syntaxe d'un concerns est la suivante : il faut écrire « module » puis le nom du concern. Ici, « topicable ». Module est un objet Ruby qui, lorsqu'il est inclus dans d'autres objets Ruby, vous permet d'y partager des méthodes. En rails, les concerns doivent étendre « active support concern ». Écrivez donc « extend active support concern ». Ceci nous permet d'enrichir notre module « topicable » afin d'y utiliser des méthodes comme « validate ». Nous allons ensuite utiliser le mot-clé « included » « do end ». Ce que vous allez écrire comme code ici sera directement intégré au niveau de l'objet dans lequel topicable sera inclus. Vous pouvez associer ça littéralement à une sorte de copier-coller du code qu'il y aura dans « included » au sein de l'objet-cible. Commençons par exemple à y déplacer ces trois « validates ». Nous allons également y mettre les deux « scope » de « topic », « published » et « search » ainsi que l'association polymorphique à « picture ». Pour pouvoir ensuite réintégrer ces méthodes au sein de notre objet topic, il suffit d'utiliser le mot-clé « include » suivi du nom de notre module, « topicable ». N'oublions pas de supprimer ici les trois méthodes « validates » qui sont déjà présentes dans notre module. Faisons de même dans le modèle « topic answer ». De cette manière, non seulement nous avons supprimé du code dupliqué, mais nous ajoutons également les scope « published », « search » à « topic answer », ainsi que l'association « has one picture ». Désormais, tout ce que nous mettrons dans notre module « topicable » sera partagé par nos deux classes « topic answer » et « topic ». De nouveau, vous pouvez considérer ici que le mot-clé « include » soit automatiquement remplacé par tout ce qui est présent ici. Notez que vous pouvez également créer des méthodes d'instance qui seront partagées par les deux classes. Par exemple, nous pourrions créer la méthode « publish » avec un point d'interrogation qui va automatiquement publier un sujet ou une réponse. Voilà donc l'ajout d'une méthode d'instance. Nous pouvons également ajouter des méthodes de classe grâce à « class methods ». Nous pouvons par exemple y définir la méthode « default scope ». Tout ce que nous mettrons dans cette méthode seront des tris automatiquement réalisés lors de la récupération de données. Ici, lorsque nous récupérons des réponses ou des sujets de discussion, ils seront automatiquement triés par ordre décroissant de date de création. Donc, le plus récent sera en premier. Nous aurions pu également le renseigner ici. Les deux syntaxes se retrouvent ici similaires. Utilisez toutefois avec parcimonie « default scope ». Surtout si vous commencez à y mettre des points « where » Cela peut avoir des effets néfastes et inattendus. Je l'utilise personnellement uniquement pour effectuer des tris par défaut comme c'est le cas ici. Pour écraser ce tri par défaut, vous pourrez toujours utiliser la méthode « reorder », comme ceci, pour appliquer un nouveau tri. Nous avons vu, grâce aux concerns, comment partager du code entre deux modèles en Ruby on rails et éviter ainsi de la duplication.

L'essentiel de Ruby on Rails

Concevez des applications web évolutives et intemporelles avec Ruby on Rails. Installez l’environnement, réalisez un projet de stack overflow, enrichissez-le, etc.

6h08 (85 vidéos)
Aucun commentaire n´est disponible actuellement

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !