L'essentiel de Ruby on Rails

Comprendre les scopes

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Votre formateur vous explique le rôle des scopes. Vous verrez comment en tirer parti pour faciliter le filtrage des données.
05:14

Transcription

Nous allons dans cette vidéo découvrir les scopes. Pour cela, nous allons ajouter une propriété, published, à nos sujets de discussion pour dire si elles sont publiées ou non. Rendez-vous dans votre terminal et écrivez rails generate, suivi du mot migration puisque nous allons générer une migration pour modifier la structure de notre base de données, pour ajouter la donnée published à topic, puis, littéralement add_published_to_topics, suivi de published:boolean. Exécutons. Nous avons un ficher de migration qui vient d’être généré. Allons le voir. Grâce au to_topics que nous avons mis tout à l’heure, Ruby on Rails a automatiquement généré une migration où il sait qu’il faut ajouter une colonne à la table topics. Nous pouvons y mettre une valeur par défaut, par exemple vrai, à savoir que l’ensemble des sujets de discussion déjà existants seront déjà publiés en ligne, autrement dit, lorsque nous exécuterons cette migration, Ruby on Rails modifiera automatiquement toutes les données existantes en base de données actuellement en leur mettant la nouvelle colonne published avec la valeur true par défaut. Exécutons la migration. Maintenant que cela est fait, nous allons rajouter une page published qui nous permettra d’accéder uniquement à nos sujets de discussion publiés. Rendez-vous donc dans votre fichier routes et rajoutez ici un do end, puis le mot-clé collection, encore do end, puis ici get ‘published’. Avant de vous expliquer cela, voyons d’abord quelle route cela a générée. Vous retrouvez ici la route que nous venons d’ajouter. Le fait d’utiliser le mot-clé collection a eu pour effet de rajouter l’URL /published à partir de l’URL /topics. Un autre mot-clé existe, c’est le nom number qui aurait, lui, agi sur cette URL-ci, à savoir que nous aurions eu /topics/:id/published. Remarquez comme également, cela va chercher directement l’action published dans le contrôleur topics. Ajoutons donc cette action. Allons dans le contrôleur, écrivons def published. Plutôt que de réécrire ce qu’il y a dans la méthode index, pour obtenir pour le moment les mêmes résultats paginés et avec la méthode de recherche, nous allons créer une méthode. Allons ici dans private et écrivons get_topics. Ceci fait, nous pourrons la réutiliser au niveau de notre action index et de notre action published. Nous allons maintenant ajouter un scope à notre modèle topic pour ne récupérer que les sujets de discussion publiés. Allez donc dans le modèle topic. Ecrivez def self.published where(published:true). Remarquez qu’ici, je n’ai pas utilisé le mot clé self. Il est, en vérité, implicitement utilisé. Mais comme nous sommes extrêmement fainéants dans le monde de Ruby on Rails, nous avons quelque chose de bien plus rapide pour faire la même chose. Ecrivez le mot-clé scope suivi de published sous forme de symbole, puis une virgule, une flèche, avec le signe moins, ouvrez les accolades, mettez where, entre-parenthèses, published :true. Cette simple ligne remplace les trois lignes 5, 6 et 7. Nous pouvons maintenant utiliser la méthode published à l’intérieur de notre action published, exactement comme nous l’aurions fait avec def self.published. Ajoutons enfin un lien dans notre index pour pouvoir accéder à cette page. Testons l’accès. Nous obtenons une erreur. Encore une fois, elle était attendue par moi. Disons que le template manque pour l’action published. Il est vrai que nous n’avons pas créé de vue published.html.erb. L’inconvénient, c’est que cette vue serait strictement identique à celle d’index. Or, nous n’aimons pas dupliquer le code, surtout en Ruby on Rails. Aussi, rendez-vous dans votre contrôleur topics_controller et ici, écrivez simplement render_index. Revenez sur votre site. Rafraîchissez et magie : vous avez exactement la page d’index, sauf que vous noterez à l’URL que vous êtes bien sur /topics/published. Je vous montre ici à quoi ressemblerait cette page si vous aviez seulement cinq sujets de discussion publiés. Et lorsque nous revenons à l’index normal, nous retrouvons bien tous nos sujets de discussion. Nous avons vu dans cette vidéo une première approche des scopes. Les scopes sont très utiles et une manière très simple d’écrire des méthodes de filtrage sur des données.

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 !