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データを削除することができます。