シードファイルとフィクスチャの違い
ruby on rails 3
Railsのデータ初期化には、シードファイルとテクスチャの2つの方法がある。
どちらも同じようにDBにデータを突っ込む点は変わりないが、それぞれに意味を持って使い分けるのが良い。
シードファイル
マスタテーブルのデータなど、プロジェクトの初期値設定に使用する。
Rubyスクリプトにて記述されている。
保存場所は、db/seed.rb
。
TableA.create(:id =>1, :value=>'test1') TableA.create(:id =>2, :value=>'test2')
フィクスチャ
テストデータの設定に使用する。
ファイルはYAML形式。
保存場所は、test/fixtures
。「テーブル名.yml」で保存する。
A: id: 1 value: test1 B: id: 2 value: test2
また、参照データを作るときは、ラベル名を使って関連付けしたデータを登録できる。これにより、テストデータなどIDの指定が必要な作成に向いている。
tableAs.yml
A1: value: testA1 price: 1000 A2: value: testA2 price: 2000
tableBs.yml
B1: tableA: A1 stock: 100
testA1にidを指定せずとも、ラベル名を指定することでA1とB1の関連付けができる。