0

我需要幫助填充我的數據庫表中的一些隨機數據。 我的系統中有10個用戶的列表。我的過敏表具有以下字段:填充軌道上的紅寶石隨機數據

ID user_ID的名稱反應狀態

我有一個名爲allergy_hash變量以下過敏哈希值。

{:reaction_name=>"Bleeding", :status=>"Death", :name=>"A"} {:reaction_name=>"Nausea", :status=>"Serious", :name=>"B"} {:reaction_name=>"Fever", :status=>"Death", :name=>"C"} {:reaction_name=>"Blistering", :status=>"Serious", :name=>"D"} 

這是我迄今所做的:

def create_random_data 
users.each do |user| 
    allergies.each do |allergies_hash| 
    Allergy.where(user_id: user.id).first_or_create(
     allergies_hash) 
    end 
    end 
end 

什麼上面確實只是插入出血,死亡和A到表中的所有用戶1到10 但我需要插入,以便不同的用戶可以有不同的值。另外一些用戶可能有一個以上的過敏和相關的反應。

注意:我並不意味着完全隨機。例如,名稱'A'仍應具有關聯狀態'死亡'和reaction_name'出血'。 名字'B'在過敏表中應該具有相關的狀態'嚴重'和反應'噁心'。

回答

1

在創建用戶,在allergies_hash = [{:reaction_name=>"Bleeding", :status=>"Death", :name=>"A"}, {:reaction_name=>"Nausea", :status=>"Serious", :name=>"B"}, {:reaction_name=>"Fever", :status=>"Death", :name=>"C"}, {:reaction_name=>"Blistering", :status=>"Serious", :name=>"D"}]

Allergy.where(user_id: user.id).first_or_create(allergies_hash.sample) 

UPDATE使用sample 我會通過用戶環路代替,所以對於每一個用戶試圖添加從1到3過敏反應_hash

User.all.each do |user| 
    [1,2,3].sample.times do 
    user.allergies.where(allergies_hash.sample).first_or_create 
    end 
end 
+0

Thanks.but上面的代碼如何在任何地方檢查user_id? – Micheal 2013-03-14 16:25:13

+0

'user.allergies'會搜索和/或添加'user_id == user.id' – Leito 2013-03-14 16:33:50

+0

是一些rails功能,它如何知道表中有user_id?它可能是UserId等 – Micheal 2013-03-14 16:38:19

0

您可以種子數據到你的應用程序通過將種子文件在app/db目錄

,做這樣的事情

User.delete_all 
Bill.delete_all 

u1 = User.create(:email => "[email protected]", :password =>"a", :password_confirmation => "a") 

b1 = Bill.create(:name => "rent", :description => "the rent", :amount => 10_000, :day => 1) 
b2 = Bill.create(:name => "cable", :description => "the cable", :amount => 150, :day => 5) 

,或者您也可以使用法克爾寶石產生假數據。

http://geekswithblogs.net/alexmoore/archive/2010/01/18/faker-gem---a-quick-and-dirty-introduction.aspx

+0

我想編寫代碼的原因是在編碼數據的代碼中還有其他函數。這個.rake文件會在其他開發者每次檢出一份新代碼時運行。我不應該通過應用程序/數據庫添加 – Micheal 2013-03-14 16:08:51