我想通过与FactoryGirl的关系来表达。我有三个模型A,B和BA,其中模型A是独立的,B的模型如下:
Class B
include DataMapper::Resource
property :prop1
property :prop2
...
has n, :propn, :through => :ba
end
A的模型如下:
Class A
include DataMapper::Resource
property :propn
end
BA的模型如下:
Class BA
include DataMapper::Resource
belong_to :a, :key=>true
belong_to :b, :key=>true
end
在我的spec文件中,我按如下方式创建A和B的模型:
@a = FactoryGirl.create(:a)
@b = FactoryGirl.create(:b)
由于此型号BA,无法创建B,因此会出错。实际上我不知道如何指定所需的A到BA的依赖性。换句话说,我不能写下面我已明确指出的以下部分。
factory :c do
association :a
association :b
end
factory :b do |x|
x.prop1 <val1>
x.prop2 <val2>
...
<to be filled to write depency on b through ba>
end
所以请帮忙。
答案 0 :(得分:1)
您可以使用after(:create)在工厂女孩中设置关联。我用a和b替换了我的一些模型名称,试图将它与你的例子相匹配。此外,当您只是设置属性时,您不需要| x |。
factory :a_with_b, class: a do
quantity_needed 2
description "cold"
event_id 1
guest_created false
after(:create) do |a|
b = FactoryGirl.build(:b)
a.ab << b
end
end