Ruby on rails 工厂女孩&x2014;创建变量

Ruby on rails 工厂女孩&x2014;创建变量,ruby-on-rails,factory-bot,Ruby On Rails,Factory Bot,我有一个项目,成堆的工厂是这样的: FactoryGirl.define do factory :terms_document do created_by { FactoryGirl.create(:user) } updated_by { FactoryGirl.create(:user) } ... end end 如何在开始时创建一个可在整个工厂使用的用户?您可以向工厂文件添加缓存方法: def user @user ||= FactoryGirl.c

我有一个项目,成堆的工厂是这样的:

FactoryGirl.define do
  factory :terms_document do
    created_by { FactoryGirl.create(:user) }
    updated_by { FactoryGirl.create(:user) }
    ...
  end
end

如何在开始时创建一个可在整个工厂使用的用户?

您可以向工厂文件添加缓存方法:

def user
  @user ||= FactoryGirl.create(:user)
end

FactoryGirl.define do
  factory :terms_document do
    created_by user
    updated_by user
    ...
  end
end
更新:如果不同的工厂实例需要不同的用户:

def user(term_document)
  @users ||= {}
  @users[term_document] ||= FactoryGirl.create(:user)
end

FactoryGirl.define do
  factory :terms_document do
    ...
    after(:build) do |term_document|
      created_by user(term_document)
      updated_by user(term_document)
    end
  end
end

真漂亮,谢谢。一个问题:如果工厂是为用户应该属于的公司而设,您将如何设置外部id,以便
user.company
指的是正在建立的公司?如果我正确理解您的问题,您希望每个公司对象仅使用一个用户对象,而两个不同的公司应使用不同的用户(因为一个用户对象不能属于两个不同的公司)?我想要不同的公司。每个公司都应该有不同的用户。但是,公司中对用户的每个引用都应该是同一个用户,以保存正在创建的1000个用户。这可能吗?您当前的答案是,缓存的方法是否在工厂的不同实例中保持?是的,当前解决方案缓存
用户
对于
工厂的所有实例