2014-11-09 88 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