0

我需要帮助在我的数据库表中填充一些随机数据。我的系统中有一个包含 10 个用户的列表。我的过敏表有以下字段:

id user_id name 反应状态

我在一个名为 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

上面所做的只是将 Bleeding、Death 和 A 插入到所有用户 1 到 10 的表中。但我需要插入这样不同的用户可以有不同的值。此外,一些用户可能有不止一种过敏和相关反应。

注意:我并不是说完全随机。例如名称“A”仍应具有关联状态“死亡”和反应名称“出血”。名称“B”应在过敏表中具有相关状态“严重”和反应“恶心”。

4

3 回答 3

1

创建用户时,使用sampleonallergies_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)

更新 我将遍历用户,因此对于每个用户,您尝试从 allergies_hash 添加 1 到 3 个过敏

User.all.each do |user|
  [1,2,3].sample.times do
    user.allergies.where(allergies_hash.sample).first_or_create
  end
end
于 2013-03-14T16:09:52.887 回答
1

I would recommend you to check Faker and Factory girl to populate some random data.

于 2013-03-14T16:16:40.033 回答
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 生成假数据。

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

于 2013-03-14T16:01:42.667 回答