グループに属するユーザーモデルがあります。グループには一意の名前属性が必要です。ユーザーファクトリとグループファクトリは、次のように定義されます。ファクトリ_アイルアソシエーションを介してレコードを検索または作成します。
Factory.define :user do |f|
f.association :group, :factory => :group
# ...
end
Factory.define :group do |f|
f.name "default"
end
最初のユーザーが作成されると、新しいグループも作成されます。 2人目のユーザーを作成しようとすると、同じグループをもう一度作成したいので失敗します。
factory_girl関連付けメソッドに、既存のレコードを最初に探す方法がありますか?
注:これを処理するメソッドを定義しようとしましたが、f.associationを使用できません。
Given the following user exists:
| Email | Group |
| [email protected] | Name: mygroup |
との関連付けが工場定義で使用されている場合にのみ動作することができます:私はこのようなキュウリのシナリオで使用できるようにしたいと思います。
非常にうまく動作します。ありがとうございます。 'Group.find_or_create_by(name:name)' – migu
Rails 4の好ましい方法は、実際には 'Group.where(name:name).first_or_create'です。 – Laurens
これはおそらく受け入れられる回答であるべきです。 Drive-by-ers ...あなたの解決策はここにあります。 – ocodo