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