É péssimo alterar várias tabelas em um único arquivo de migração do Rails?


11

Eu escrevi um arquivo de migração com o seguinte código:

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

É péssimo não criar dois arquivos de migração, um para cada alteração, ou está bom?


Isso parecia a minha mesma pergunta ... mas queremos adicionar um campo "updated_by" a quase todos os nossos modelos. Podemos fazer isso em uma única migração AddUpdatedByToMostObjects?
Alien Life Form

Respostas:


10

Você deseja manter as alterações relacionadas juntas. Por exemplo, se você implementar uma relação bidirecional e adicionar colunas / tabelas para relações AR suficientes, você deseja mantê-las em uma migração.

Se as alterações no esquema não estiverem relacionadas umas às outras (partes de recursos diferentes, por exemplo), é melhor mantê-las em migrações separadas.

Faço um experimento mental quando não tenho certeza. Tento interromper a migração para as menores partes possíveis e, em seguida, verifico se meu recurso ainda funciona se eu remover apenas uma delas. Se for esse pedaço, provavelmente não pertence a essa migração.

O seu parece-me que pode ser dividido em duas migrações. Parece que você tem dois recursos aqui. Um é sobre adicionar horários aos jogadores e outro para adicionar treinadores aos horários.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.