在ruby on rails中填充随机数据



我需要帮助填充一些随机数据在我的数据库表。我的系统中有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"应伴有"严重"状态和"恶心"反应。

创建用户时,在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"}]上使用sample

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

我建议你检查Faker和Factory girl来填充一些随机数据。

你可以通过进入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

最新更新