Factory Girl:重用关联作为属性

Factory Girl: Reuse association as attribute

我有一个模型 Plan,它有一个 Creator 和一个 Contact。联系人属于创作者。每个 Plancontact 必须属于 creator

如何使用 FactoryGirl 确保 contact 关联来自 creator.contacts 数组?

换句话说,我想做这样的事情:

FactoryGirl.define do
  factory :project do
    name "MyString"
    user
    contact {user.contacts.sample}
end

但是,这不起作用。有任何想法吗?

请注意,我对 Plan 模型进行了验证,以确保分配的联系人属于创建者。这目前无法通过此验证。

我错过了对用户的 reload 调用,因为用户工厂在创建回调后创建联系人。

你有 2 种方法来构建具有依赖性的笨重对象:

  1. 使用 FactoryGirl callbacks。在您的情况下,您应该定义 after(:create) 回调并分配其他依赖项。
  2. 创建辅助方法,该方法将创建您的对象并分配额外的依赖项。这种方式与first类似,但更灵活。