L'essentiel de Ruby on Rails

Solution : Corriger les bogues et optimiser son application

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Ce défi est l'un des plus complexes de cette formation en raison du nombre de notions à mettre en œuvre. Visionnez les solutions proposées et n'hésitez pas à les réviser plusieurs fois pour bien les assimiler.
10:07

Transcription

Avez-vous réussi à réaliser l'exercice de ce premier chapitre ? Si ce n'est pas le cas, ou si vous avez eu des difficultés, ce n'est pas grave, j'espère qu'à la fin de cette vidéo de solution, tout deviendra clair et limpide. Commençons par créer la classe User. Ajoutons-lui les propriétés souhaitées. Comme nous souhaitons ensuite pouvoir modifier la propriété products, nous allons directement l'ajouter à attr_accessor. En guise de méthode de constructeur, nous définissons la méthode initialize, prenant en paramètres le préno, et le nom de famille. Nous définissons ici les variables d'instance. Puis définissons la variable d'instance products comme étant initialisée à un tableau vide. Nous pouvons d'ors et déjà définir les deux méthodes : display_products et display_toys. Testons en créant un utilisateur, à savoir le « "Capitaine", "Haddock" ». Nous pouvons regarder si nous l'avons bel et bien créé. Testons en exécutant le script. Nous avons bel et bien notre utilisateur qui se trouve être créé. Continuons maintenant avec la classe Product. Cette classe possède les propriétés name, price et type. Créons ces méthodes constructeur initialize. Elle prendra en paramètres les trois propriétés de la place Product. Nous définissons ici les variables de l'instance. Notez la présence de la méthode to_f, qui signifie to_float, cela forcera notre attribut price à être une instance de la classe float. Cela signifie que si l'utilisateur fournit un attribut price étant une instance de la classe integer, à savoir, un entier relatif, alors, cet attribut sera transtypé en float. C'est-à-dire qu'il sera converti en une instance de la classe float, et donc, en décimale. Continuons avec la méthode average. Il s'agit ici d'une méthode de classe. Aussi, n'oubliez pas le mot-clé self., pour indiquer que c'est une méthode de classe. La méthode de classe attend en paramètres une liste de produits, à savoir ici products. Testons d'abord si cette liste contient des éléments. Si ce n'est pas le cas, nous affichons un message pour demander à l'utilisateur de fournir des produits. Afin d'empêcher l'exécution du code qui pourrait se trouver par la suite dans cette méthode, nous pouvons utiliser le mot-clé return. Cela aura pour effet de sortir immédiatement de cette méthode. Continuons en calculant la moyenne. Nous définissons une variable en l'initialisant à zéro. Ensuite, pour chaque produit de notre tableau de produits, nous allons additionner le prix. Nous ajoutons ce prix à la variable result. Enfin, pour obtenir la moyenne, nous devons diviser par le nombre de produits, à savoir, la taille de notre tableau products. Il nous reste à créer la classe Toy. Cette classe doit hériter de la classe Product. Nous souhaitons qu'elle possède également sa propre propriété minimum_age. Nous souhaitons également que la propriété type soit forcément définie à Toy. N'oubliez pas ici d'initialiser la propriété minimum_age. Ensuite, nous pouvons utiliser la méthode super pour faire appel à la méthode initialize de la classe parente, à savoir Product. C'est à cet endroit que nous allons indiquer que la propriété type prendra forcément Toy. Nous en avons fini avec la classe Toy. Revenons à nos métodes display_products, et display_toys de notre classe User. Testons dans la méthode display_products si nous avons des produits définis au niveau de notre propriété products. Si c'est le cas, affichons la liste. Ensuite, nous parcourons la tableau des produits. Pour chaque produit, nous affichons son nom, et son prix. Pour la méthode display_toys, nous suivons le même schéma, à ceci près, que nous ne sélectionnons que les produits de type toy de notre tableau de produits. Pour cela, nous utilisons la méthode select. Ensuite, nous testons si notre produit a le type toy. Je vous présente ici une autre syntaxe pour éviter d'afficher la liste des jouets si nous n'en avons aucun. ici, nous exécutons la commande return, à savoir, nous sortons de la méthode display_toys si le tableau des toys est vide. Dans le cas contraire, nous continuons l'exécution de notre code. Pour chaque jouet, nous allons afficher l'ensemble de ces informations. Son nom, son prix, et l'âge minimum requis. Il ne reste plus qu'à créer l'ensemble des produits et des jouets, et les assigner à l'attribut Product de notre utilisateur. Nous créons ici le produit « Vin rouge » , car le Capitaine Haddock adore le vin, qui est un produit de type drink, à savoir une boisson, ainsi qu'un produit « Sabre », un produit « Ruby », qui est un bijou, valant 300 Euros. Et deux jouets, une « Peluche Milou », et un « Jeu de dames ». Avec l'âge minimum requis à cinq ans pour la peluche, et sept and pour le jeu de dames. Nous faisons enfin aux deux méthodes display_products, et display_toys, pour afficher la liste de nos produits et de nos jouets, associer notre utilisateur, « Capitaine Haddock ». Sauvegardons le tout, et exécutons notre script. Vous voyez qu'il fonctionne merveilleusement bien. Nous avons en effet la liste des produits avec les différents prix, et la liste des jouets. Cela n'était pas demandé, mais nous pouvons également utiliser les méthodes average que nous avons créées au niveau de notre classe Product. Pour ce faire, affichons « Moyennes des prix », puis faisons appel à notre méthode average. Pour cela, nous devons directement utiliser le nom de la classe, Product, et appeler la méthode dessus. Nous pouvons donner en paramètres la liste des produits que nous avions assignés au tableau products de notre utilisateur. Sauvegardons et testons. Nous avions bien ici la moyenne des prix qui s'affiche. En guise de bonus, je vais vous présenter une méthode identique à average qui permettra de faire la même chose, mais en beaucoup plus court. Voyez plutôt. Je vais utiliser un ensemble de méthodes de la classe array en Ruby, et les chaîner. Tout d'abord, la méthode map. Cette syntaxe va revenir à itérer sur chacun des éléments du tableau products et à sélectionner son prix. J'utilise ensuite la méthode reduce. Cette méthode-ci va itérer sur chacun des éléments du tableau précédent et les additionner un à un. Je divise le tout par la taille de mon tableau pour obtenir la moyenne. Évidemment, je n'oublie pas de tester que j'ai les produits. Je ne vous demande pas de comprendre, ni même de savoir refaire cette ligne de code, juste sachez que cela permet de faire exactement la même chose que la méthode average, mais en beaucoup plus court. Pour vous en convaincre, nous pouvons le tester. Voyez, j'obtiens bien le même résultat. J'espère que la démonstration de la solution à cet exercice vous a plu. N'hésitez pas à revisionner la vidéo pour comprendre tous les éléments qui ont été présentés dans cette solution.

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 !