#流れ
- gemをインストール
- githubにてデータを生成するためのメソッドを確認
- seeds.rbファイルに記述
- 生成(手順3を飛ばしてコンソールでの保存も可能だが、再利用ができないためおすすめはしない。)
#gemをインストール
まず、今回使用するgemをプロジェクト内にインストールするためにGemfileに以下を記述します。
gem 'faker'
gem 'forgery'
それから、ターミナルでbundle install
を実行します。
$ bundle install
#メソッドを確認
次に生成したいデータを生成するためのメソッドをそれぞれのgemのgithubにて確認します。
[faker](https://github.com/stympy/faker#usage title: 'faker')
[forgery](https://github.com/sevenwire/forgery#full-list-of-methods title: 'forgery')
例えば、短文のダミーデータを生成したいとします。
その場合、Faker::Lorem.sentence
を記述することで短文のダミーデータが取得できます。
$ rails c
[1] pry(main)> Faker::Lorem.sentence
=> "Ut totam ipsum sit sed ratione."
[2] pry(main)> Faker::Lorem.sentence
=> "Rerum numquam tenetur facilis incidunt aut pariatur ut in."
[3] pry(main)> Faker::Lorem.sentence
=> "Qui deserunt sit sit commodi consequatur harum ex sequi."
それぞれのメソッドがどんなものを生成するのか、コンソールで試すこともできます。
$ rails c
[1] pry(main)> Faker::Business.credit_card_number
=> "1211-1221-1234-2201"
[2] pry(main)> Forgery('date').day
=> 4
[3] pry(main)> Faker::Commerce.color
=> "purple"
#seeds.rbに記述
テストを行なうためのサンプルデータを追加したり、顧客データなどの既に用意されているデータを事前に追加しておく場合などに使います。
追加したいActiveRecord::Baseクラスを継承したモデルクラスとcreateメソッドを使用して、データベースにダミーデータを保存するための記述をします。
今回は、usersテーブル
に100件のダミーデータを追加したいと思います。fakerとforgeryを適宜使用しています。
100.times do
User.create(email: Forgery('email').address, password: Forgery(:basic).password, nickname: Forgery('internet').user_name ,avatar: Faker::Avatar.image, place_id: Faker::Number.between(1, 100))
end
#生成
あとは、seeds.rbファイルを実行するためのコマンドを実行するだけです。
$ bundle exec rake db:seed
生成するデータの量によって終了までの時間が左右されます。ユーザーデータ等データの重複が許されない場合、100件を指定しても重複するデータははじかれるため、100件分すべて生成されることはありません。ツイート情報のように重複があっても許される場合は100件生成されます。