キュウリにfactory_girlとの関連付けを設定するためのベストプラクティスは何ですか?

StackOverflow https://stackoverflow.com/questions/1673533

質問

私は普通factory_girlを持つレコードを設定するには、この手順を使用します:

Given /^the following (.+) records?:$/ do |factory, table|
  table.hashes.each do |hash|
    Factory(factory, hash)
  end
end

との関連付けを設定するときに、ここで私の仕事は、周りにいます:

Given the following group record:
  | id | name |
  | 1  | foo  |
And the following item records:
  | name | group_id |
  | bar  | 1        |
  | baz  | 1        |
  # ...

私は、これは悪いです知っています。 IDSを使用すると、ドメイン人物の見晴らしから全部が脆く、不可解になります。

だから、私の質問は - factory_girlと上記のような表引数との関連付けを設定するためのベストプラクティスがどうなるか。

役に立ちましたか?

解決 2

ただ、自分の質問に答えるために:ピクルスする

他のヒント

あなたは、工場内の複数の関連付けを定義することができます。
次のように:

Factory.define :item do |item|
    item.name          "item_name"
end

Factory.define :group do |group|
    group.name          "group_name"
    group.items         { |items| [ items.association(:item), items.association(:item) ] }
end

その中の二つのアイテムを使用して、グループupletを作成しますFactory(:group)をやってます。

あなたは定義されてFactoryGirlのキュウリの手順を使用することができます。
https://github.com/thoughtbot/factory_girl/blob/master /lib/factory_girl/step_definitions.rbする

あなただけの1キュウリのステップでセットアップアイテムとあなたのグループ(複数可)をすることができます:

Given the following items exists:
  | Name     | Group        |
  | Foo      | Name: Bar    |
  | Foam     | Name: Bar    |
  | Food     | Name: Bar    |

このようにそれをやった場合、グループ「バー」の作成が最初の呼び出しは、グループを作成しますので、次の2つの呼び出しは、既に作成したグループを見つけ、「find_or_create_by」機能を使用しています。

このようにして、すべての3つの項目は、同じグループ「バー」を持つことになります、そして、あなたは必要な数だけグループ化されたアイテムを作成することができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top