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

上記は、1 から 10 までのすべてのユーザーの Bleeding、Death、および A をテーブルに挿入するだけです。ただし、異なるユーザーが異なる値を持つことができるように挿入する必要があります。また、一部のユーザーは複数のアレルギーとそれに関連する反応を起こすことがあります.

注: 完全にランダムという意味ではありません。たとえば、名前「A」には、関連付けられたステータス「死亡」と反応名「出血」がまだ必要です。名前 'B' は、アレルギー テーブルで関連するステータス '深刻' と反応 '吐き気' を持つ必要があります。

4

3 に答える 3

1

ユーザーを作成するときはsampleallergies_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

FakerFactory girlをチェックして、ランダムなデータを入力することをお勧めします。

于 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 に答える