Est-ce une mauvaise forme de changer plusieurs tables dans un seul fichier de migration Rails?

11

J'ai écrit un fichier de migration avec le code suivant:

class AddScheduleIdToPlayers < ActiveRecord::Migration
  def change
        add_column :players, :schedule_id, :integer
        add_column :schedules, :coach_id, :integer
  end
end

Est-ce une mauvaise forme de ne pas créer deux fichiers de migration, un pour chaque modification, ou est-ce correct?

Eric Baldwin
la source
Cela SEMBLE comme ma même question ... mais nous voulons ajouter un champ "updated_by" à presque tous nos modèles. Pouvons-nous le faire en une seule migration AddUpdatedByToMostObjects?
Alien Life Form

Réponses:

10

Vous souhaitez regrouper les modifications associées. Par exemple, si vous implémentez une relation bidirectionnelle et ajoutez des colonnes / tables pour suffire aux relations AR, vous souhaitez conserver celles-ci dans une migration.

Si les modifications de schéma ne sont pas liées les unes aux autres (parties de fonctionnalités différentes, par exemple), il est préférable de les conserver dans des migrations distinctes.

Je fais une expérience mentale quand je ne suis pas sûr. J'essaie d'interrompre la migration pour les plus petites pièces possibles, puis de vérifier si ma fonctionnalité fonctionne toujours si je ne retire qu'une seule des pièces. Si c'est le cas, cette pièce n'appartient probablement pas à cette migration.

Le vôtre me semble pouvoir être divisé en deux migrations. Il semble que vous ayez deux fonctionnalités ici. L'un concerne l'ajout d'horaires pour les joueurs et un autre l'ajout d'entraîneurs aux horaires.

Inutile
la source