LoginSignup
35
29

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-08-06

流れ

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

35
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
29