使用具有FactoryGirl关联的现有模型

时间:2015-12-09 20:19:32

标签: ruby-on-rails ruby activerecord factory-bot factory

我在FactoryGirl中设置了一些模型,我想在它们之间建立关联。特定型号上的关联关键字非常有用!但是,我不想创建我认为是关键字关键字的新模型。我想与已创建的特定模型实例相关联,或者可以选择轻松完成。我知道这里有一个代码味道,所有这些设置,但下面是一个例子。

obj1 = create(:thing_one)
obj2 = create(:thing_two, :with_thing_one)

将是我现在正在进行的设置(但是除了两个之外还有一些模型和关联)并且它没有obj2和obj1对象在数据库中正确关联。如果我做了像

这样的事情
obj1 = create(:thing_one)
obj2 = create(:thing_two, thing_one: obj1)

它会正确关联所有内容。

问题在于,如果我必须自己设置所有内容,这似乎比使用工厂更值得工作。为什么我不只是使用ActiveRecord并手动设置这些对象?

编辑:

可能出现的另一种情况如下:

obj1 = create(:object)
obj2 = create(:object_two, needed_object: obj1)
# obj3 is dependent on obj2 being created which is dependent on obj1
obj3 = create(:object_three, needed_object_two: obj2)

1 个答案:

答案 0 :(得分:0)

FactoryGirl包含associations,您可以非常轻松地使用现有工厂。以下示例假设您拥有属于客户的订单。

FactoryGirl.define do 
  factory :order do
    association :customer, factory: :customer
  end
end