L'essentiel de Ruby on Rails

Migrer avec la donnée user

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
Après avoir manipulé les fichiers de migration, découvrez tout ce qui est possible d'y faire après avoir créé la donnée user.
07:48

Transcription

Vous avez sans doute déjà manipulé les fichiers de migration. Mais vous êtes sans doute loin de connaitre l’ensemble des méthodes pouvant être utilisées au sein de ces fichiers. Nous allons, en créant le modèle user, en découvrir des nouvelles. Commençons par générer le modèle user. Pour le moment, ne mettez rien derrière. Nous allons modifier le fichier de migration pour ajouter des attributs manuellement au modèle user. Ouvrez le fichier nouvellement créé. Nous allons lui ajouter un prénom et un nom de famille. La méthode create_table va créer une table dans notre base de données. Nous lui donnons ensuite en paramètre le nom de cette table en symbole. Cette méthode accepte également un bloc de codes en paramètre. Nous avons, dans ce bloc de codes, accès à une variable t. Cette variable permet d’ajouter des colonnes à notre table avec la syntaxe suivante : t.type_donnée espace, le nom de la colonne sous forme de symbole. Nous avons donc ici ajouté firstname et lastname qui sont deux colonnes de type string. timestamps est une méthode spécifique. Elle est équivalente à t.datetime :created_at et t.datetime :updated_at. Ces deux colonnes comprendront respectivement la date de création de la donnée et la date de dernière mise à jour. t.timestamps est généralement inclus par défaut lorsque nous utilisons la méthode generate que nous avons exécutée dans notre terminal. Nous pouvons également rajouter des options, par exemple ici, limiter le prénom à 80 caractères et faire de même pour le nom de famille. Rajoutons également une date de naissance. Je sais que cela s’écrit birthday, la typo est faite exprès. Si nous n’avons pas accès à cette méthode create_table, il est possible d’ajouter individuellement les colonnes à l’aide de la méthode add_column. Par exemple, nous pourrions ajouter ici la colonne email à la table users. Cette méthode prend en paramètres le nom de la table, la colonne à ajouter, puis son type. De la même manière, nous pouvons ajouter des options, par exemple, dire que cette colonne ne doit jamais être vide et que chaque e-mail doit être unique. Nous pouvons aussi ajouter un index. Les index, comme leur nom l’indique, permettent d’indexer les données users grâce à leur attribut email. Cela accélèrera énormément la recherche et filtrage des utilisateurs par leur adresse email. Nous pouvons désormais exécuter rake db:migrate. Nous obtenons une erreur. Cette erreur nous dit que nous ne pouvons ajouter une colonne ne pouvant être vide sans valeur par défaut. Ajoutons donc une valeur par défaut. Mettons-la : vide. Réexécutons rake db:migrate et cette fois, la table se crée bien. Notez que anotate a également annoté notre modèle user. Nous aimerions maintenant modifier notre table users. Nous allons donc générer un nouveau fichier de migration que nous allons simplement appeler modify_users_table. Le fichier est immédiatement généré. Je ne vous ai pas encore parlé de cette méthode change. Cette méthode change permettra d’exécuter l’ensemble du code à l’intérieur, que nous exécutions la commande rake db:migrate pour modifier la structure de nos bases de données ou rake db:rollback pour revenir en arrière. Dans les versions précédentes de Rails, il existait plutôt les méthodes up et down. change est un raccourci pour ces deux méthodes. Lorsque nous ajoutions ici par exemple une colonne fullname à users, il ne fallait pas oublier de mettre la réciproque dans la méthode down. Grâce à change nous n’avons pas besoin d’écrire cette deuxième ligne de code. En revenant en arrière, Rails saura automatiquement que la réciproque de add_column est remove_column. Laissez-moi vous présenter encore quelques autres méthodes, notamment change_table qui fonctionne de la même manière que create_table mais avec une table existante. Nous aimerions par exemple renommer la colonne birtday mal orthographiée. Nous pourrions pour cela utiliser ici remove :birtday, puis recréer la colonne avec la bonne orthographe. Mais il serait ici préférable d’utiliser plutôt la méthode rename. Cette méthode prend en paramètres la colonne à renommer et le nouveau nom. Nous pouvons également ajouter un booléen, par exemple pour dire si un utilisateur est administrateur ou non en mettant faux par défaut et rajouter également un index, par exemple sur la colonne fullname. Il existe aussi une autre méthode nommée change_column permettant de modifier le type d’une donnée. Par exemple, si nous voulions modifier le type de birthday à date, nous le ferions ainsi. La différence entre datetime et date est assez simple : datetime contiendra, en plus de la date du jour, l’heure également. N’oublions pas d’écrire, dans la méthode down, les réciproques. Pour écrire les réciproques, j’ai l’habitude de démarrer de la fin de la méthode up pour les ordonner dans la méthode down. Nous pouvons très bien utiliser la méthode change_table dans la méthode down pour modifier la table users. Il faut que les réciproques soient toutes présentes. Notez également l’existence de la méthode drop_table qui permet de supprimer l’ensemble d’une table de données. Alors, pourquoi utiliser les méthodes up and down lorsque l’on peut utiliser la méthode change ? Il y a certains cas de figure, notamment lorsque vous souhaiteriez modifier un ensemble de données lorsque vous exécutez la commande rake db:migrate. Par exemple ici, puisque nous ajoutons la colonne fullname, nous aimerions le définir comme étant la concaténation de prénom et de nom de chacun des utilisateurs. Je vous indique cette méthode car elle est assez souvent utilisée dans les applications Ruby on Rails. Cependant, je n’en suis pas spécialement très fan. Je préfère en effet effectuer ce genre de modification au sein de tâches Rake. Cet type de code, dans les migrations, pourrait en effet engendrer des problèmes inattendus. Reste à exécuter rake db:migrate pour modifier notre table. Nous pouvons utiliser également rollback pour revenir en arrière, rajouter également un paramètre STEP pour revenir de deux migrations en arrière, ou encore utiliser rake db:migrate :redo STEP=2 pour revenir de deux pas en arrière dans les migrations et ré-effectuer la migration. Cette vidéo vous a présenté plus précisément différentes méthodes existant au niveau des migrations de Ruby on Rails.

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 !