2012-05-08 10 views
1

私はいくつかの外部キーを持つストアモデルを持っています。私はstate_id、country_id、currency_id、timezone_idなどを持っています...私はこれらのそれぞれのための工場を作成する必要がありますか?店舗の工場では、次のような操作を行います。Railsでテストするときは、シードや工場ガール、またはその両方を使用しますか?

a.state State.where(:abbreviation => "MA").first || Factory(:state, :abbreviation => "MA") 

このデータは単に書き込むだけですか?

答えて

3

rake seedタスクを使用すると、それはデータベースにのみ追加されます。ただし、db:test:prepareタスクのように、データベースからすべてのレコードが削除されるため、シードタスクは効果的ではありません。

あなたの工場のアプローチはよく見えますが、コードを中括弧で囲むことをお勧めします。

a.state { State.where(:abbreviation => "MA").first || Factory(:state, :abbreviation => "MA") } 

これは、ファクトリが呼び出されるたびに再実行され、データベースに重複が作成されないようにします。

1

工場の女の子を使用すると、すでにレーキの種がしていることがあります。

この特別なケース(工場の女の子を使用していることを意味していることを意味します)では、レーキシードを使用する必要があります。私はあなたにさらに大きなNOを与えます。それはあなたのテストであなたの組織を破壊します。

関連する問題