我想通过FactoryGirl指定以下类型的关联。我有三个模型A,B和C,其中DataMapper中的C模型如下:
Class C do
include DataMapper::Resource
belongs_to :A, :key=>true
belongs_to :B, :key=>true
end
我不知道如何在FactoryGirl中指定它,即我的意思是我想这样写:
factory :c do |c|
<To be Filled>
end
请帮忙。
答案 0 :(得分:0)
许可属于LicenseTemplate
FactoryGirl.define do
factory :license do
start_date { Time.now}
end_date { Time.now + 30.days }
factory :license_with_template do
association :license_template, factory: :license_template
end
after(:build) do |doc|
if doc.license_template
doc.agents_count = doc.license_template.agents
doc.requests = doc.license_template.requests
end
end
end
end
上面的代码给了我两个工厂'许可'和'license_with_template'。在'build'块之后初始化需要在保存对象之前初始化的值。
答案 1 :(得分:0)
不确定DataMapper
(以及它如何适用于/如果它包含在工厂定义中),但对于关联,请执行以下操作:
FactoryGirl.define do
factory :C do |c|
...
c.association :a
c.association :b
end
end
答案 2 :(得分:0)
FactoryGirl.define do
factory :c do |f|
f.a
f.b
end
end
如果为a
和b
创建工厂,并确保工厂的名称与模型的名称相同,则只需指定关联即可。每次执行时,FactoryGirl都会创建a
和b
:FactoryGirl.create(:c)
。该关联应仅在一方指定,最好属于一方。