我有presentation
属于participant
,而user
又属于 factory :presentation do
sequence(:title) { |n| "Some topic nr #{n}" }
association :participant
end
factory :participant do
name "John Doe"
association :user, :guest
end
factory :user do
trait :admin do
ident 1000
roles ["admin"]
end
trait :guest do
ident 9000
roles ["guest"]
end
end
。
我的FactoryGirl类定义是:
spec
当我运行FactoryGirl.create_list(:presentation, 3)
:ident
时,我收到用户已被误认为的错误,因为participant
值必须是唯一的。
问题是,我不想为每个演示文稿创建新对象。它应该属于同一个user
对象(因此属于同一个Image
对象)。
所以我想要的是:创建属于相同参与者的3个演示文稿。
答案 0 :(得分:2)
您可以在构建之后使用
来代替关联 factory :presentation do
sequence(:title) { |n| "Some topic nr #{n}" }
after(:build) do |s|
unless Participant.count == 0
s.participant = Participant.first
end
s.participant ||= create(:participant)
end
end
答案 1 :(得分:0)
您可以先创建participant
,
@participant = FactoryGirl.create(:participant)
然后,在创建演示文稿时分配participant
,
@presentations = FactoryGirl.create_list(:presentation, 3, participant: @participant)