【问题标题】:Factorygirl reuse associationFactorygirl再利用协会
【发布时间】:2014-11-11 21:50:18
【问题描述】:

这里我定义了两个工厂,Post 和 User,其中 User 与 Post 相关联。我正在使用它来播种数据库(不是测试)。

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 个帖子?理想情况下,我想去 User#show 页面并查看超过 1 个帖子。

【问题讨论】:

    标签: ruby-on-rails factory-bot


    【解决方案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 )
    

    【讨论】:

    • also - users[rand(10)] 也可能是 users.sample
    • 这会从 10 个用户中随机抽取 1 个用户,并将该用户分配给所有 100 个帖子。我正在寻找一种方法让 FactoryGirl 每次都选择一个随机关联的用户(从 10 个用户池中)并创建一个帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2019-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多