2012-02-07 82 views
5

我试图用一个简单的脚本填充我的数据库来创建测试数据,这个脚本为我的模型创建了足够数量的记录来记录所有依赖关系(特别是多态性)。如何使用Factory Girl和random_data正确随机化seed.rb数据?

这是我seeds.rb

require 'factory_girl_rails' 

50.times do 

    @user = FactoryGirl.create(:user) 
    FactoryGirl.create(:contact, :user => @user) 

    @question = FactoryGirl.create(:question, :user => @user) 

    FactoryGirl.create(:user_answer, :question => @question, :authorable => @user) 

    @contact = FactoryGirl.create(:contact, :user => @user) 
    FactoryGirl.create(:contact_answer, :question => @question, :authorable => @contact) 

end 

作为一个例子,这里IST的question工厂:

FactoryGirl.define do 
    factory :question do 
    title  "What is the best place to travel in " + Random.country + "?" 
    body  Random.paragraphs(2) 
    association :user, :method => :build 
    end 
end 

虽然Random类确实产生一个随机来看,这个词仍然是相同的所有创建的实例。在这种情况下,我会得到50个问题,比如说,“在西班牙旅行的最佳地点是什么?”以及每个文本的相同的两段文字。

我错过了什么?

+0

'seeds.rb'应该只用于添加所需的“静态”数据到数据库,而不是“固定”它。要创建基础数据,以便您可以在开发时手动测试应用程序,您应该创建一个rake任务(我们有'rake db:populate') – fuzzyalej 2012-02-07 08:50:51

+0

感谢您指出了这一点。但是,如果我在一个单独的任务中运行相同的操作,你会期望行为发生变化吗? – 2012-02-07 10:11:04

回答

3

所以我不确定Random班是从哪里来的。但我总是使用这个东西Faker gem

它的名字,电子邮件,城市,电话号码:是这样的:

Faker::Name.name 
Faker::Address.uk_country 
Faker::Lorem.paragraph 

检查出来

+0

仅供参考@Matthew:[这是Random类的来源](https://github.com/tomharris/random_data)。 – 2012-02-21 21:53:01

相关问题