以下のリンクで Laravel に表示されるようなシード データ ファイルを自動生成し、シード データを作成する方法はありますか?
Rails の db フォルダーの下に別のアプリでタイムスタンプ付きのファイルが作成され、シード データが含まれているタイムスタンプ付きのファイルがいくつか見られました。
これを作成するための良いアプローチは何でしょうか?
以下のリンクで Laravel に表示されるようなシード データ ファイルを自動生成し、シード データを作成する方法はありますか?
Rails の db フォルダーの下に別のアプリでタイムスタンプ付きのファイルが作成され、シード データが含まれているタイムスタンプ付きのファイルがいくつか見られました。
これを作成するための良いアプローチは何でしょうか?
I suggest you to use the combination of Fabrication gem and Faker.
Fabrication allows you to write a pattern to build your objects and Faker gives you fake data like names, emails, phone numbers and so on.
This is how a fabricator looks like:
Fabricator(:user) do
username { Faker::Internet.user_name }
name { Faker::Name.first_name }
surname { Faker::Name.last_name }
password { "testtest" }
password_confirmation { |attrs| attrs[:password] }
end
In your db/seed.rb
you can use it like this:
50.times { Fabricate(:user) }
You will get 50 fake users with random username and "testtest" password :)
実際のシード データ (ステータスのルックアップ テーブルなど) を作成する場合は、次のようなものをdb\seeds.rb
ファイルに追加できます。
# Statuses
# Will insert 5 rows in statuses table
['Not Started', 'In Progress', 'On Hold', 'Complete', 'Not Applicable'].each do |status|
Status.find_or_create_by(status: status)
end
次に、コンソールから:
$ rake db:seed
テストの実行時にデータを作成するには、次を使用できます。
load "#{Rails.root}/db/seeds.rb"
Fakerと呼ばれるシードデータ用の非常に便利な gem があります。生成するランダム データの種類は多少制限されますが、名前や住所などの単純なものには非常に便利です。
もちろん、それをループに入れて、自分でDBに挿入するクエリを書く必要があります。