5

以下のリンクで Laravel に表示されるようなシード データ ファイルを自動生成し、シード データを作成する方法はありますか?

Laravel データベースの移行とシード

Rails の db フォルダーの下に別のアプリでタイムスタンプ付きのファイルが作成され、シード データが含まれているタイムスタンプ付きのファイルがいくつか見られました。

これを作成するための良いアプローチは何でしょうか?

4

3 に答える 3

15

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 :)

于 2013-09-15T15:35:43.937 に答える
1

実際のシード データ (ステータスのルックアップ テーブルなど) を作成する場合は、次のようなものを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"

于 2013-09-15T22:25:46.163 に答える
0

Fakerと呼ばれるシードデータ用の非常に便利な gem があります。生成するランダム データの種類は多少制限されますが、名前や住所などの単純なものには非常に便利です。

もちろん、それをループに入れて、自分でDBに挿入するクエリを書く必要があります。

于 2013-09-15T15:29:14.607 に答える