学習記録

アウトプット用に作りました

Fakerを使ってダミーデータを作る

Fakerとは

ダミーデータを自動生成してくれるgemです。
gemfileにgem 'faker'を記載してbundle installを行い使えるようになります。


使い方

seeds.rbにUser(10件)とTask(20件)のダミーデータを用意します。

(db/seeds.rb)
10.times do
    User.create!(last_name: Faker::Name.last_name,
                 first_name: Faker::Name.first_name,
                 email: Faker::Internet.email,
                 password: 'password',
                 password_confirmation: 'password')
end

20.times do |n|
    Task.create!(title: "タイトル#{n}",
                  body: "本文#{n}",
                  user: User.offset(rand(User.count)).first)
end

Fakerを使ってダミーデータを作るときには、
名前やemailなどはFakerが用意しているメソッドを使います。
Faker: :Name.last_name、email: Faker::Internet.emailなど...


taskのダミーデータを作るとき、
user: User.offset(rand(user.count)).firstを使ってユーザー(user_id)を指定します。
Userテーブルのユーザーの数をランダムでレコードを取得する。その最初のレコードを使う、という意味です。

  • .offset : レコードを指定した場所から取得する。

  • user.count : countメソッド。ユーザーの数。

  • first : 最初に取得したレコード。


ダミーデータをデータベースに投入するときは、
$ rails db:seedを使います。


データベースをリセットしたいとき

rails db:resetとrails db:migrate:resetの2つがあります。
両者の違いは、
rails db:reset

  • マイグレーションファイルを編集しても、その内容を反映されません。

  • db/schema.rbを元にデータベースを作成します。

rails db:migrate:reset

  • マイグレーションファイルを直接使用するので、変更が反映されます。
    データベースを削除した後にdb/migrate/を古い順から実行します。

  • migrateファイルを修正したときに、一度データベースを削除した上で、
    新たにマイグレーションを適用したい場合などに使います。

データベースのロールバック

直前に行ったマイグレーションロールバックしたいときに使います。
$ rails db:rollback

マイグレーションを複数ロールバックしたいときに使います。
$ rails db:rollback STEP=3

ロールバックと再マイグレーションを一度に実行できるショートカットです。
$ rails db:migrate:redo STEP=3