🧚 Écoute ! Beekeeper Studio est une interface de base de données rapide, moderne et open source Télécharger
22 avril 2025 Par Matthew Rathbone

Ruby on Rails est un framework d’applications web puissant, souvent salué pour sa simplicité et sa philosophie « convention plutôt que configuration ». Mais sous cette simplicité se cache un ensemble d’outils robustes conçus pour faciliter la vie des développeurs.

L’un de ces outils est la commande rails generate migration. Elle te permet de modifier efficacement le schéma de ta base de données, en gardant sa structure synchronisée avec ton code. Dans ce guide, on explore en détail les puissantes options de ligne de commande disponibles avec rails generate migration.

Premiers pas avec les migrations

Les migrations permettent de faire évoluer le schéma de ta base de données au fil du temps, de façon cohérente et organisée. Vois-les comme un système de gestion de versions pour ta base de données.

Pour un guide complet sur les bases, consulte notre tutoriel Comment générer une migration Rails.

Pour créer une migration simple, tu utiliserais :

rails generate migration AddFieldnameToTablename fieldname:string

Cette commande génère un fichier de migration dans le répertoire db/migrate.

Structure de base d’un fichier de migration

Un fichier de migration ressemble généralement à ceci :

class AddFieldnameToTablename < ActiveRecord::Migration[6.0]
  def change
    add_column :tablename, :fieldname, :string
  end
end

Exécuter les migrations

Pour appliquer ta migration, lance :

rails db:migrate

Cela exécute la méthode change de chaque nouveau fichier de migration et met à jour le schéma de ta base de données.

Options avancées de ligne de commande

La commande rails generate migration propose de nombreuses options pour réaliser facilement des opérations complexes sur ta base de données. Voici quelques-unes de ces options.

1. Spécifier la version de Rails

Quand tu travailles avec les migrations Rails, il faut savoir que la version de la migration est déterminée automatiquement par la version de ton application Rails. La classe de migration hérite de ActiveRecord::Migration avec le numéro de version correspondant à ta version de Rails.

2. Migrations réversibles

Pour les changements qui ne sont pas automatiquement réversibles, tu peux définir à la fois les méthodes up et down :

class AddDetailsToUsers < ActiveRecord::Migration[6.0]
  def up
    add_column :users, :details, :text
  end

  def down
    remove_column :users, :details
  end
end

Les méthodes up et down te donnent un contrôle total sur la façon dont les migrations sont exécutées et annulées.

3. Générer automatiquement des index

Ajouter un index sur une colonne est un besoin courant pour améliorer les performances de la base de données. Utilise le modificateur index pour y parvenir.

Pour plus de détails sur les index, consulte notre guide Rails Migration : syntaxe add index.

rails generate migration AddUserIdToPosts user_id:integer:index

Cette commande crée une migration qui ajoute un champ entier nommé user_id au tableau posts et génère automatiquement un index dessus.

4. Ajouter des références et des clés étrangères

Créer une association entre tableaux implique souvent d’ajouter des clés étrangères. L’option references simplifie tout ça :

rails generate migration AddCategoryRefToProducts category:references

Cette commande ajoute une colonne category_id au tableau products et crée automatiquement un index dessus. Elle met aussi en place une contrainte de clé étrangère.

Pour en savoir plus sur les clés étrangères, consulte notre guide Rails Migration Foreign Key.

Fichier de migration attendu :

class AddCategoryRefToProducts < ActiveRecord::Migration[6.0]
  def change
    add_reference :products, :category, foreign_key: true
  end
end

5. Renommer des colonnes et des tableaux

Pour renommer des colonnes ou des tableaux, Rails fournit des méthodes intégrées :

rails generate migration RenameDescriptionInProducts

Puis modifie manuellement le fichier généré :

class RenameDescriptionInProducts < ActiveRecord::Migration[6.0]
  def change
    rename_column :products, :description, :product_description
  end
end

Pour renommer le tableau entier :

class RenameOldTableToNewTable < ActiveRecord::Migration[6.0]
  def change
    rename_table :old_table, :new_table
  end
end

Conclusion

La commande rails generate migration est un outil puissant de l’écosystème Rails qui permet des modifications de base de données précises, évolutives et faciles à maintenir. En tirant parti de ces options avancées de ligne de commande, tu peux booster tes scripts de migration et garantir des applications Rails robustes et performantes.

Découvre ces tutoriels sur les migrations Rails :

La prochaine fois que tu modifies le schéma de ta base de données, réfléchis aux options qui simplifieront le plus ton développement. Bon code !

Beekeeper Studio est une interface de base de données gratuite & open source

Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.

La version Linux de Beekeeper est 100% complète : rien de bâclé, aucun compromis sur les fonctionnalités.

Ce que les utilisateurs disent de Beekeeper Studio

★★★★★
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
— Alex K., développeur base de données
★★★★★
« J’ai essayé beaucoup d’interfaces de base de données, mais Beekeeper trouve l’équilibre parfait entre fonctionnalités et simplicité. Ça marche, tout simplement. »
— Sarah M., ingénieure full stack