2012-02-07 37 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

相關問題