
Migrations avancées
Complex migrations, reversible migrations, data migrations, rollbacks, DB constraints vs validations, safe migrations
1Quelle est la différence entre les méthodes change et up/down dans une migration Rails ?
Quelle est la différence entre les méthodes change et up/down dans une migration Rails ?
Réponse
La méthode change est une syntaxe simplifiée introduite dans Rails 3.1 qui permet à Rails de déduire automatiquement l'opération inverse. Elle fonctionne pour la plupart des opérations courantes comme add_column ou create_table. Les méthodes up et down offrent un contrôle explicite sur les opérations d'application et de rollback, ce qui est nécessaire quand Rails ne peut pas déduire l'inverse automatiquement, par exemple lors de suppressions de données ou de transformations complexes.
2Comment rendre une migration réversible lorsque Rails ne peut pas déduire automatiquement l'opération inverse ?
Comment rendre une migration réversible lorsque Rails ne peut pas déduire automatiquement l'opération inverse ?
Réponse
Le bloc reversible permet de définir explicitement les opérations up et down au sein d'une méthode change. Cela est particulièrement utile pour les opérations comme remove_column où Rails a besoin de connaître le type et les options de la colonne pour la recréer lors d'un rollback. Le bloc reversible offre la flexibilité de up/down tout en gardant la syntaxe moderne de change.
3Quelle commande permet d'annuler plusieurs migrations en une seule opération ?
Quelle commande permet d'annuler plusieurs migrations en une seule opération ?
Réponse
La commande rails db:rollback STEP=n permet d'annuler les n dernières migrations exécutées. Par exemple, STEP=3 annulera les trois dernières migrations dans l'ordre inverse de leur exécution. Sans l'option STEP, seule la dernière migration est annulée. Cette commande est utile pour revenir rapidement à un état antérieur de la base de données pendant le développement.
Pourquoi éviter d'utiliser des références au modèle ActiveRecord dans les migrations de données ?
Quelle est la meilleure pratique pour effectuer une migration de données en production sur une table volumineuse ?
+17 questions d'entretien
Autres sujets d'entretien Ruby on Rails
Les bases de Ruby
Programmation orientée objet en Ruby
Fondamentaux Rails
Routing & Controllers
Les bases d'ActiveRecord
Views & Templates ERB
Associations ActiveRecord
Requêtes ActiveRecord avancées
Formulaires Rails
Authentification & Autorisation
Asset Pipeline & Frontend moderne
Rails en mode API
Tests avec RSpec
ActiveJob & Background Jobs
ActionCable & WebSockets
ActionMailer
ActiveStorage
Stratégies de caching
Rails Engines & Apps modulaires
Optimisation des performances
Design Patterns Rails
Métaprogrammation Ruby
Sécurité Rails
GraphQL avec Rails
Déploiement & Production
Monitoring & Logging
Stratégies d'upgrade Rails
Maîtrise Ruby on Rails pour ton prochain entretien
Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.
Commencer gratuitement