2014-11-09 58 views
0

在這裏我有兩個工廠定義,發佈和用戶與郵政相關的用戶。我正在使用它來種子數據庫(不是測試)。Factorygirl重新使用協會

FactoryGirl.define do 
    factory :user do 
    username { Faker::Internet.user_name } 
    password { Faker::Internet.password(12) } 
    email { Faker::Internet.email } 
    end 

    factory :post do 
    title { Faker::Lorem.sentence(5) } 
    url { Faker::Internet.url } 
    description { Faker::Lorem.sentences(2, word_count=9).join(" ").first(90) } 
    user 
    end 
end 

並且100次我創建了一個帖子。

FactoryGirl.create_list(:post, 100) 

問:

這將創建100個職位,它也創造了100個用戶。每個用戶一篇文章。我怎麼能告訴Factorygirl創建9個用戶(即只有一個小於100的例子,9只是一個例子),並在他們之間分配100個帖子?理想情況下,我想轉到用戶#展示頁面,並看到多個帖子。

回答

1

你可以做類似的措施:

users= FactoryGirl.create_list(:user, 10) 

total_random_posts_count = 0 
users.each do |user| 
    random_post_count = rand(1..10) 
    total_random_posts_count += random_post_count 
    FactoryGirl.create_list(:post, random_post_count, user: user) 
end 
FactoryGirl.create_list(:post, 100 - total_random_posts_count , user: user) 
+2

也 - '網友[蘭特(10)]'也可能是'users.sample' – 2014-11-09 03:32:23

+0

權,更清晰,簡潔 – emaxi 2014-11-09 03:39:05

+0

這個隨機樣本1用戶超出10並將該用戶分配給所有100個帖子。 我正在尋找一種方法讓FactoryGirl選擇一個隨機關聯的用戶(在10個池中)並且創建一個帖子。 – 2014-11-11 06:44:49