我需要帮助填充数据库表中的一些随机数据。 我的系统中有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
以上所做的只是在表格中为所有用户1到10插入出血,死亡和A. 但我需要插入不同的用户可以拥有不同的值。另外一些使用者可能有一种以上的过敏反应和相关反应。
注意:我并不是指完全随意。例如,名称'A'仍应具有关联状态'Death'和reaction_name'Bleeding'。 姓名'B'应该在过敏表中具有相关的状态'严重'和反应'恶心'。
答案 0 :(得分:1)
创建用户时,请在sample
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)
<强>更新强> 我会循环访问用户,因此对于每个用户,您尝试从过敏症中添加1到3个过敏症
User.all.each do |user|
[1,2,3].sample.times do
user.allergies.where(allergies_hash.sample).first_or_create
end
end
答案 1 :(得分:1)
我建议您检查Faker和Factory girl以填充一些随机数据。
答案 2 :(得分:0)
您可以通过转到app / db目录中的种子文件
将数据播种到您的应用中并做这样的事情
User.delete_all
Bill.delete_all
u1 = User.create(:email => "bob@aol.com", :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)
或者您也可以使用Faker gem生成虚假数据。