在rails上填充ruby中的随机数据

时间:2013-03-14 15:34:11

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2

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

3 个答案:

答案 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)

我建议您检查FakerFactory 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生成虚假数据。

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