2017-05-15 4 views
0

は私は私はこのような特異な属性を行うことができます知っている工場にhas_manyのレコードをFactoryGirl-追加: FactoryGirlで

FactoryGirl.define do 
    factory :company do 
    trading_name { FFaker::Company.name } 
    legal_type { legal_types.keys.sample } 
    updated_by { FactoryGirl.create(:user) } 
    ... 

は今、私は、ユーザーを追加しようとしているが、それを行う方法がわかりませんよ。

は、私が試した:

users { FactoryGirl.create(:user) } 

しかしusersは、ユーザーの集まりではなかったので、eachループ上のエラーを持って、それはその単一のユーザーに変更されました。

したがって、has_manyオブジェクトを工場でどのように作成しますか?それらがお互いにリンクされていることをどのように確認しますか?一部の人々はafter(:create)をやっていますが、私はCompanyレコードを保存する前にユーザーを作りたいと思っています。

答えて

1

Association sectionのFactory Girlのドキュメントには、after(:create)を使用しています。あなたのケースでは、コードは次のようになります。

更新:場合は、あなたがafter(:build)フックの代わりafter(:create)を使用することができafter_save検証モデルUserを持っている:

after(:build) do |company| 
     company.users << build(:user) 
    end 
+0

私の問題は、 'カンパニー'モデルには' user'が必要な 'after_save'コールバックがあります。モデルのコールバックは、ファクトリのコールバックの前にトリガされます。 – Mirror318

+0

私は答えにこのケースの説明を追加しました。plsチェックしてください。 –

+0

あなたは 'build(:user、company:company)'を述べる必要がありますか、それを 'company.users'に追加するので自動ですか? – Mirror318