Ruby on rails 4 如何在Rails中的seed.rb上生成具有关联的假数据

Ruby on rails 4 如何在Rails中的seed.rb上生成具有关联的假数据,ruby-on-rails-4,Ruby On Rails 4,我试图用模型关联生成假数据。例如,一家公司(模型)有许多机构(另一个模型) 公司和工厂 工厂 我们的想法是让每一家新公司至少拥有五家机构。换句话说,通过使用Company.Establish,它返回一个非空数组 从2009年开始,我在这里发现了这个旧代码,但它不起作用 100.times do Factory(:company, :address => Factory(:address), :employees => [Factory(:employee)]) end 我不

我试图用模型关联生成假数据。例如,一家公司(模型)有许多机构(另一个模型)

公司和工厂 工厂 我们的想法是让每一家新公司至少拥有五家机构。换句话说,通过使用Company.Establish,它返回一个非空数组

从2009年开始,我在这里发现了这个旧代码,但它不起作用

100.times do
    Factory(:company, :address => Factory(:address), :employees => [Factory(:employee)])
end

我不确定
Ffaker
模块是什么,但我肯定会推荐
Faker
gem。 他们有关于如何使用模块生成虚假数据的大量文档

您甚至可以创建rake任务来运行您的Faker脚本,并自动为您创建数据。就一个好的伪造者教程而言(通常只使用种子数据),我推荐以下文章:

另外,作为旁注,所有种子数据都应该在seeds.rb中。您需要使用create方法并使用键值对来指定要发布的内容。例如,如果我正在填充订单号,我将执行以下操作:

Order.create(order_number: 123456789)
在上面的代码中,特别是
FactoryGirl
指定的是符号,而不是它们的键值对。这只是一个侧面的观察

FactoryGirl.define do
  factory :establishment do
    sequence(:name) { FFaker::Name.name }
    sequence(:address) { FFaker::AddressFR.full_address }
    company
  end
end
100.times do
    Factory(:company, :address => Factory(:address), :employees => [Factory(:employee)])
end
Order.create(order_number: 123456789)