我試圖用一個簡單的腳本填充我的數據庫來創建測試數據,這個腳本爲我的模型創建了足夠數量的記錄來記錄所有依賴關係(特別是多態性)。如何使用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個問題,比如說,「在西班牙旅行的最佳地點是什麼?」以及每個文本的相同的兩段文字。
我錯過了什麼?
'seeds.rb'應該只用於添加所需的「靜態」數據到數據庫,而不是「固定」它。要創建基礎數據,以便您可以在開發時手動測試應用程序,您應該創建一個rake任務(我們有'rake db:populate') – fuzzyalej 2012-02-07 08:50:51
感謝您指出了這一點。但是,如果我在一個單獨的任務中運行相同的操作,你會期望行爲發生變化嗎? – 2012-02-07 10:11:04