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
endTypes de colonnes
Les types de colonnes courants correspondent aux types de la base de données :
stringpour du texte court.textpour du texte long.integer,floatetdecimalpour les nombres.booleanpour true/false.datetimeetdatepour les valeurs temporelles.
create_table :products do |t|
t.string :title
t.text :description
t.decimal :price
t.boolean :active
t.timestamps
endExé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
endAnnuler 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
endIndex
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
endMigrations 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_columnetadd_indexstructurent les tables.db:migrateapplique les migrations ;db:rollbackles inverse.- Utilisez
up/downpour les modifications irréversibles. schema.rbest 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.