FactoryGirl—添加一条has_many条记录到一个工厂
FactoryGirl—Add a has_many record to a factory
有了 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
记录之前让用户。
Factory Girl 文档的 Association
section 说要使用 after(:create)
。在您的情况下,代码将是:
FactoryGirl.define do
factory :company do
...
after(:create) do |company|
create_list(:user, 3, company: company)
end
更新:如果您在 User
模型中进行了 after_save
验证,您可以使用 after(:build)
挂钩而不是 after(:create)
:
after(:build) do |company|
company.users << build(:user)
end
有了 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
记录之前让用户。
Association
section 说要使用 after(:create)
。在您的情况下,代码将是:
FactoryGirl.define do
factory :company do
...
after(:create) do |company|
create_list(:user, 3, company: company)
end
更新:如果您在 User
模型中进行了 after_save
验证,您可以使用 after(:build)
挂钩而不是 after(:create)
:
after(:build) do |company|
company.users << build(:user)
end