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