我在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)
答案 0 :(得分:0)
FactoryGirl包含associations,您可以非常轻松地使用现有工厂。以下示例假设您拥有属于客户的订单。
FactoryGirl.define do
factory :order do
association :customer, factory: :customer
end
end