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 (공장가 설명서)에 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