ActiveRecord::Fixtures.fixtures_create を何回も使う

ActiveRecord::Fixtures.create_fixtures は普通 db/seeds.rb とかで使う。その時は問題ない。ただなぜか「一回ロードしたテーブルを記憶しておいて二回目はロードしない」仕組みになっているため、テストなどで何回も使うと「なんかテーブルにデータ入らないんだけど…」ということになる。

解決法

ActiveRecord::Fixtures.reset_cache を使う。例えば下記のようにすればテスト中で毎回 fixtures からデータを持ってこれます。

# ...

before do
  ActiveRecord::Fixtures.reset_cache  
  ActiveRecord::Fixtures.create_fixtures(Rails.root.join('db'), "users")
end

#...

なんでこんな仕組みになってるんだろ。