問題は次のとおりです。
結果は次のとおりです。
保留中の移行を無視するようにrakeに何らかの形で伝えたかったのですが、今のところはできません。
PDATE(追加の経験による)
移行とモデルコードの同期がとれず、移行が実行されない場合があります。この問題を回避するために、最近移行でモデルの再定義を使用しました:
# reset all callbacks, hooks, etc for this model
class MyAwesomeModel < ActiveRecord::Base
end
class DoSomethingCool < ActiveRecord::Migration
def change
...
end
end
Railsはschema_migrations
というテーブルに移行情報を保存します。
特定の移行をスキップするには、移行のバージョンをそのテーブルに追加できます。
バージョンは、ファイル名の説明の前にある数字の文字列です。
[version]_Create_Awesome.rb
これがあなたに役立つかどうかはよくわかりません。しかし、私は何かを探していて、この質問を見つけました。したがって、これは役立つかもしれません:
Rails_ROOT/config/environments/development.rbで、次の設定をfalseに設定します。
config.active_record.migration_error = false#:page_load
私の状況では、保留中の移行エラーは表示されなくなりました。同じ環境のrakeタスクとコンソールでも動作するはずです。
次のデータに応じて移行の名前を変更します。
20140730091353_migration_name.rb
に
.20140730091353_migration_name.rb
(ファイル名の先頭にドットを追加します)
次にrake db:seed
を実行し(保留中の移行について文句を言わなくなります)、移行の名前を変更します。
その後に移行が続く場合は、すべての名前を変更するか、単に一時的に移動する必要があります。
同様の問題がありました。 add_column行をコメント化して、rake db:migrateコマンドを実行し、テスト環境または実稼働環境で必要になったときにコメントを削除しました。
Railsコードにパッチを適用しない限り、方法はありません。代わりに移行を修正することを強くお勧めします。
移行は、データベース内の一部のデータの存在に依存すべきではありません。以前の移行に依存する場合がありますが、もちろんデータベース上のデータには絶対に依存しません。