ゲラウト!

困難に立ち向かい、ただひたすらに遊べ!

シードファイルとフィクスチャの違い

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の関連付けができる。