fakerとforgeryを使ってダミーデータを生成する

  • 27
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

流れ

  1. gemをインストール
  2. githubにてデータを生成するためのメソッドを確認
  3. seeds.rbファイルに記述
  4. 生成(手順3を飛ばしてコンソールでの保存も可能だが、再利用ができないためおすすめはしない。)

gemをインストール

まず、今回使用するgemをプロジェクト内にインストールするためにGemfileに以下を記述します。

Gemfile
gem 'faker'
gem 'forgery'

それから、ターミナルでbundle installを実行します。

ターミナル
$ bundle install

メソッドを確認

次に生成したいデータを生成するためのメソッドをそれぞれのgemのgithubにて確認します。

faker
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を適宜使用しています。

seeds.rb
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件生成されます。