2015-11-14 63 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)