マイグレーションファイルでの Fixtures.create_fixtures でハマった

マイグレーションでフィクスチャ - Rubyとか Illustratorとか SFとか折紙とか 見たいな事をして、migration の際に多数のデータを初期入力してたんだが、その差し替えが発生してはまった。

まあそんな感じでマイグレーションファイルを書いて(destroy_all と Fixtures.create_fixtures)、「raks db:migrate」は普通に終了するけどデータが入ってない。しかし、個別に「rake db:migrate:down VERSION=200907<云々>」「rake db:migrate:up VERSION=200907<云々>」するとデータ入力できてる。出来たと思って「raks db:migrate:redo」するとやっぱ差し替えデータ入ってない、旧データも無い。(db:migrate:down すると差し替え前データが復活する)

http://api.rubyonrails.org/classes/Fixtures.html

とか良くみると、create_fixturesしたものをキャッシュしておいて二度付けを行わないような仕組みを用意してる模様。多分テスト(スペック)書くとき二度フィクスチャの初期化指示書かれても大丈夫なようにするためとかなんだろう。もともとテスト用の便利ツールなわけだ、Fixtures。

http://api.rubyonrails.org/classes/Fixtures.html#M000318.reset_cache

と言うわけで、「Fixtures.reset_cache」を使うことにする。マイグレーションファイルの「Fixtures.create_fixtures」の所上下 reset_cache で挟んだ。
次からは reset_cacheは create_fixturesの次行に書くだけで良いよね。