È una cattiva forma cambiare più tabelle in un singolo file di migrazione di Rails?


11

Ho scritto un file di migrazione con il seguente codice:

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

È una cattiva forma non creare due file di migrazione, uno per ogni modifica, o va bene?


A SEEMED piace la mia stessa domanda ... ma vogliamo aggiungere un campo "updated_by" a quasi tutti i nostri modelli. Possiamo farlo in una sola migrazione AddUpdatedByToMostObjects?
Alien Life Form

Risposte:


10

Vuoi mantenere insieme le modifiche correlate. Ad esempio, se si implementa una relazione bidirezionale e si aggiungono colonne / tabelle a sufficienza per le relazioni AR, si desidera mantenerle in una migrazione.

Se le modifiche allo schema non sono correlate tra loro (parti di caratteristiche diverse, ad esempio) è meglio tenerle in migrazioni separate.

Faccio un esperimento mentale quando non ne sono sicuro. Cerco di interrompere la migrazione per i pezzi più piccoli possibili e quindi verificare se la mia funzione funziona ancora se ne rimuovo solo uno. Se è quel pezzo è probabile che non appartenga a questa migrazione.

Mi sembra che possa essere diviso in due migrazioni. Sembra che tu abbia due caratteristiche qui. Uno riguarda l'aggiunta di programmi per i giocatori e un altro per l'aggiunta di allenatori ai programmi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.