0

約 1 週間前に、最初のアプリから列を削除する移行を行いました。

class RemoveHalfOrFullFromFurlough < ActiveRecord::Migration
  def up
    remove_column :furloughs, :half_or_full
  end

  def down
    add_column :furloughs, :half_or_full, :decimal
  end
end

half_or_fullまだ私のスキーマにあるので、何か間違ったことをしたに違いありません。Active Admin gem を追加しようとした今日まで気が付きませんでした。このゾンビ列からデータを取得しようとしていて、何をすべきかわからないため、エラーが発生します。

それ以来、多くの移行を行ったので、単純なロールバックが選択肢になるとは思いませんでした。たぶんそうですか?

これは、列を作成した元の移行です。

class AddHalfOrFullToFurloughs < ActiveRecord::Migration
  def change
    add_column :furloughs, :half_or_full, :decimal
  end
end
4

1 に答える 1

0

移行に関する私の哲学は次のとおりです。

私が開発段階にいる間、移行のアイデアは、セクションで変更を行い、upセクションでそれを元に戻すことができるということdownです。必要に応じて、最初にロールバックして一番上までロールフォワードするか、途中で停止することができます。私はまだシステムを「開発」しており、いつでもどこにデータベースを配置する必要があるかについてのルールを作成しています。(私は水平を制御します。私は垂直を制御します。)

移行をデバッグするときは、1 つまたは 2 つのレベルをロールバックしてから、ロールフォワードして変更を微調整することがあります。完全に再現できるように、ロールフォワードのみを行うべきだと言う人もいます。データが使い捨ての場合、別の移行で愚かなステップを元に戻すことに通常は意味がありません。そのため、バックアップし、微調整して、もう一度実行します。あなたや他の人のマイレージは異なる場合があります。

開発フェーズからテストおよび本番環境に移行すると、ルールが変わります。データベースとコードはその時点でかなり安定している必要があり、「実際に」データをロードしているため、最後までロールフォワードしてそこにとどまります。

于 2013-05-20T15:18:59.240 に答える