• 20 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

Ce cours est en vidéo.

Vous pouvez obtenir un certificat de réussite à l'issue de ce cours.

J'ai tout compris !

Mis à jour le 23/10/2018

Créez votre première table

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Avec Ruby on Rails, l’une des premières choses à faire est de réfléchir aux tables dont nous aurons besoin pour stocker les données de notre site.

Le projet que nous allons construire ensemble est un gestionnaire de livres à lire. Je veux, sur mon site, pouvoir ajouter les livres que je veux lire et retirer ceux que j’ai déjà lus.

Il nous faut donc une table « Livres », où chaque entrée sera un livre en particulier. Nous n’avons besoin que d’une colonne, « Titre ». Quand je veux ajouter un livre à lire, j’ajoute une entrée ; et quand je l’ai lu, je la supprime.

Avant de vous dire comment créer cette table, j’aimerais m’arrêter sur une citation célèbre dans le monde informatique :

Il n’y a que deux choses difficiles en informatique : l’invalidation du cache et nommer les choses. — Phil Karlton

Laissons l’invalidation du cache de côté, ça ne nous concerne pas. Nommer les choses est moins simple qu’il n’y paraît. Rails a sa façon de nommer les choses que nous allons suivre. Voici les règles concernant les noms des tables et colonnes :

  • tout en anglais, sans accent, en minuscules ;

  • les espaces sont remplacées par des underscores « _ » ;

  • le nom des tables doit être le pluriel de ce que représente une entrée ;

  • le nom des colonnes est au singulier.

Ainsi, Livres devient « books » et Titre devient « title ».

Passons au code ! Dans votre terminal, dans votre répertoire castor, faites :

rails generate migration TableBooks

Ce qui va générer dans le dossier db/migrate/ le fichier *_table_books.rb, avec la date et l’heure à la place de l’astérisque.

Ouvrez ce fichier avec votre éditeur de texte. Il contient actuellement ceci :

class TableBooks < ActiveRecord::Migration
  def change
  end
end

On dit que ce fichier ruby est une migration. Il permet de changer la structure de votre base de données. Changer la structure d’une base de données, c’est ajouter, supprimer ou modifier une table ou une colonne. C’est comme remplir la première ligne d’un tableur avec le nom des colonnes. Si ces noms changent, il faut faire une migration pour changer sa structure.

Dans une migration, on liste les tables et colonnes à créer (ou supprimer). Pour notre application, voici ce que nous devons ajouter à ce fichier :

class TableBooks < ActiveRecord::Migration
  def change
    create_table :books
    add_column :books, :title, :string
  end
end

Deux étapes :

  1. Nous utilisons la fonction create_table, qui prend pour argument le nom de la table à créer ;

  2. Nous ajoutons une colonne avec la fonction add_column, qui prend trois arguments : le nom de la table sur laquelle ajouter la colonne, le nom de la colonne et son type.

Comme les variables en ruby, les colonnes d’une base de données peuvent être de différentes natures, que l’on appelle types. En voici une liste incomplète, à titre indicatif :

  • string pour les textes de moins de 255 caractères ;

  • text pour les textes pouvant faire plus de 255 caractères ;

  • integer pour un nombre sans virgule ;

  • float pour un nombre à virgule ;

  • datetime pour une date et heure.

Vous avez écrit votre migration, parfait. Maintenant, il faut qu’elle soit prise en compte. Sans cela, elle n’aura aucun effet. Pour cela, exécutez la commande suivante :

rake db:migrate

Pour exploiter notre base de données avec Rails, pour ajouter et supprimer des lignes, il nous manque un fichier qui fait la liaison entre notre base et notre code. Créez le fichier app/models/book.rb avec ce contenu :

class Book < ActiveRecord::Base
end

On dit que ce fichier, ou cette classe, est un modèle. Un modèle est une classe Ruby qui représente une table d’une base de données. Notez comme le nom du modèle est le même que celui de la table, mais au singulier. C’est grâce à cette convention de nommage que Rails fait le rapprochement entre notre classe et notre table.

Pour vérifier que tout va bien, dans le terminal, tapez cette commande :

rails console

Cette commande est un « super irb ». C’est un irb qui inclut toutes les classes de votre site. Dans la console rails, tapez :

Book.new

Le résultat doit être :

#<Book id: nil, title: nil>

Rails a bien fait la liaison avec votre base de données, c’est pour cela que l’on voit notre colonne « title » apparaître. Tapez exit pour sortir de la console rails.

Exemple de certificat de réussite
Exemple de certificat de réussite