2015-11-14 65 views
0

Rails的FactoryGirl协会冲突我有一个presentation属于一个participant这又属于user具有独特的验证

我FactoryGirl类定义是:

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 

当我跑我specFactoryGirl.create_list(:presentation, 3)我得到的用户已经当作ident值必须是唯一的错误。

的事情是,我不希望创建各种演示的新对象。它应属于同一participant对象(并且因此相同user对象)。

所以我想要:创建属于相同参与者的3个演示文稿。

回答

1

相反的关联,你可以建立后的使用:

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 
0

您可以创建一个participant第一,

@participant = FactoryGirl.create(:participant) 

而且,然后分配participant而创建演示文稿,

@presentations = FactoryGirl.create_list(:presentation, 3, participant: @participant)