2017-05-15 93 views
0

隨着FactoryGirl我知道我可以做單一屬性是這樣的:一個的has_many記錄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) } 

但得到一個錯誤上each循環,因爲users不是用戶的集合,它改爲是單個用戶。

那麼如何在工廠中創建has_many對象?你如何確保它們彼此鏈接?有些人做了after(:create),但我想在保存Company記錄之前創建用戶。

回答

1

Association section Factory Girl文檔說使用after(:create)。你的情況的代碼將是:

更新:在一個情況下,你必須after_save驗證在User模型,你可以使用after(:build)掛鉤,而不是after(:create)

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

我的問題是,'公司'model有一個'after_save'回調,需要'user'存在。模型的回調在工廠回調之前觸發。 – Mirror318

+0

我已將此案的說明添加到答案中,請檢查它。 –

+0

你需要聲明'build(:user,company:company)',還是自動添加到'company.users'中? – Mirror318

相關問題