0Pricing
Ruby Academy · Leçon

Migrations

Faites évoluer le schéma

Migrations est une leçon Ruby Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Ruby Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Ruby Academy comprend 4 leçons au total.

Qu’est-ce qu’une migration ?

Une migration est un fichier Ruby versionné qui décrit une modification du schéma de votre base de données, comme la création d’une table ou l’ajout d’une colonne.

  • Les migrations sont du code, elles sont donc conservées dans le système de gestion de versions.
  • Toute l’équipe applique les mêmes modifications dans le même ordre.
  • Vous ne modifiez jamais la base de données manuellement.

Générer une migration

Rails génère les fichiers de migration pour vous. Par exemple, rails generate migration CreateUsers crée un fichier horodaté dans db/migrate/. L’horodatage fixe l’ordre d’exécution des migrations.

Créer une table

Une migration définit une méthode change. create_table construit une table ; t.timestamps ajoute automatiquement created_at et updated_at.

class CreateUsers < ActiveRecord::Migration[7.1]
  def change
    create_table :users do |t|
      t.string :name
      t.string :email
      t.timestamps
    end
  end
end

Types de colonnes

Les types de colonnes courants correspondent aux types de la base de données :

  • string pour du texte court.
  • text pour du texte long.
  • integer, float et decimal pour les nombres.
  • boolean pour true/false.
  • datetime et date pour les valeurs temporelles.
create_table :products do |t|
  t.string :title
  t.text :description
  t.decimal :price
  t.boolean :active
  t.timestamps
end

Exécuter les migrations

rails db:migrate applique toutes les migrations en attente et met à jour schema.rb. Rails enregistre les migrations déjà exécutées dans une table schema_migrations, afin que chacune ne soit exécutée qu’une seule fois.

Ajouter une colonne

Pour étendre une table existante, générez une migration et utilisez add_column. Vous indiquez la table, le nom de la colonne, son type et ses options.

class AddAgeToUsers < ActiveRecord::Migration[7.1]
  def change
    add_column :users, :age, :integer, default: 0
  end
end

Annuler une migration

rails db:rollback annule la dernière migration. Rails inverse automatiquement une méthode change lorsque les opérations sont réversibles, comme add_column ou create_table.

Modifications irréversibles

Certaines opérations ne peuvent pas être inversées automatiquement, comme l’exécution de SQL brut ou la suppression d’une colonne contenant des données. Pour ces opérations, définissez explicitement les méthodes up et down afin que Rails sache comment annuler la modification.

class ChangeData < ActiveRecord::Migration[7.1]
  def up
    execute "UPDATE users SET active = TRUE"
  end

  def down
    execute "UPDATE users SET active = FALSE"
  end
end

Index

Ajoutez un index pour accélérer les recherches sur une colonne que vous interrogez souvent, comme une clé étrangère ou une adresse e-mail utilisée pour la connexion. Utilisez unique: true pour imposer également l’unicité au niveau de la base de données.

class AddIndexToUsersEmail < ActiveRecord::Migration[7.1]
  def change
    add_index :users, :email, unique: true
  end
end

Migrations et schema.rb

Les migrations constituent l’historique des modifications ; schema.rb est l’instantané actuel. Les nouveaux développeurs peuvent exécuter rails db:schema:load pour construire instantanément la base de données à partir de cet instantané, plutôt que de rejouer chaque migration.

Bonnes pratiques

Pour que vos migrations restent sûres :

  • Ne modifiez jamais une migration déjà exécutée dans des environnements partagés ; écrivez-en une nouvelle.
  • Concentrez chaque migration sur une seule modification.
  • Ajoutez des contraintes au niveau de la base de données (null: false, index) pour garantir l’intégrité.

Vérification rapide

Vérifiez votre compréhension des migrations.

Récapitulatif : migrations

Vous avez appris à faire évoluer le schéma en toute sécurité :

  • Les migrations sont des modifications versionnées du schéma, enregistrées dans le système de gestion de versions.
  • create_table, add_column et add_index structurent les tables.
  • db:migrate applique les migrations ; db:rollback les inverse.
  • Utilisez up/down pour les modifications irréversibles.
  • schema.rb est l’instantané actuel.

Vous allez maintenant relier les modèles avec des associations.

Questions Fréquemment Posées

La leçon « Migrations » est-elle gratuite ?

Oui — le texte complet de « Migrations » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Ruby Academy, passe à CoddyKit PRO. Le cours Ruby Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Migrations » ?

Faites évoluer le schéma Tu pratiques Ruby Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Ruby Academy ?

Aucune expérience préalable n'est requise. Ruby Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Migrations » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Ruby Academy ?

Oui. Chaque leçon Ruby Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Bases d’Active Record
  2. Migrations
  3. Associations
  4. Validations et requêtes
← Retour à Ruby Academy