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