Fakerを使ってseeds.rbファイルにテストデータを定義する

はじめに

Fakerを使ってデータを作成する方法について

seeds.rbは、アプリケーションの挙動などを確認するために必要なテストデータを定義しておくファイルです。

rails db:seedを実行することで、そのファイルに定義しているテストデータを一気に生成できます。

Fakerは、テストデータを作成する際にランダムな名前やメールアドレスなどを作成できるGemです。

FakerのREADME↓ github.com

設定方法

まずはFakerを導入します。

gem 'faker'
$ bundle install

これでFakerを導入できたので、seedファイルにテストデータの定義をします。

5.times do
   User.create(
       first_name: Faker::Name.first_name,
       last_name: Faker::Name.last_name,
       email: Faker::Internet.email,
       password: '12345678',
       password_confirmation: '12345678'
   )
 end
 
 10.times do |n|
   Post.create(
       user: User.offset(rand(User.count)).first,
       title: "タイトル_#{n}",
       body: "本文_#{n}"
   )
 end

Fakerを使ってランダムな名前とメールアドレスをもつ5人のユーザーを作成します。

そして、作成したユーザーの中から毎回ランダムに1人取得してきて、10個のポストを作成します。

randはランダムに値を取得します。

offsetはデータ取得の開始位置を指定します。

テストデータを作成する

先程定義したテストデータを作成するには下記のコマンドを実行します。

$ rails db:seed ※seedに書かれた処理を実行。

逆にテストデータを消したい場合は、

$ rails db:migrate:reset 

このコマンドは、マイグレーションを一旦リセットしてから、またマイグレーションを行います。

つまり、一度作ったseedデータを削除することができます。