※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
fakerでダミーデータを作成する
アプリ作成も終盤なので、動作確認も兼ねてダミーデータを作成する
- ruby 3.2.5
- rails 7.2.1
- MacOS sonoma 14.5
日本語のダミーデータは見た目がイマイチだったので、ここだけ英語を適用させる
seeds.rbに書く
Faker::Config.locale = 'en'
ここから先のコードもseeds.rbに続けて書き足していく
userの作成
board、task、commentともにuserがいないと始まらないため、まずはuserを適当に作る
自分+1人いればいいんだけど、せっかくなのでfakerで作ってみる
userに必要なもの
- password(入力用と確認用)
userを1人だけ作成
1.times do
User.create!(
email: Faker::Internet.unique.email,
password: 'password123',
password_confirmation: 'password123'
)
end
unique
なので、重複しないメールアドレスが作成できる
boardの作成
boardはbelongs_to :user
なので、userと紐づける
boardに必要なもの
- name・・・length: { minimum: 2, maximum: 20 }
- description・・・length: { minimum: 2, maximum: 50 }
- user_id
boardは2つ作成
users = User.all
2.times do
Board.create!(
name: Faker::Lorem.sentence(word_count: 2),
description: Faker::Lorem.sentence(word_count: 4),
user_id: users.sample.id # ランダムなユーザーと紐づけ
)
end
全userの中からランダムに紐づける
taskの作成
taskはbelongs_to :user
、belongs_to :board
なのでそれぞれ紐づける
taskに必要なもの
- title・・・length: { minimum: 2, maximum: 25 }
- description・・・length: { minimum: 2, maximum: 200 }
- deadline
- user_id
- board_id
taskは3つ作成
boards = Board.all
3.times do
Task.create!(
title: Faker::Lorem.sentence(word_count: 2),
description: Faker::Lorem.sentence(word_count: 25),
deadline: Faker::Date.forward(days: rand(1..30)), # 1〜30日後のランダムな日付
user_id: users.sample.id, # ランダムなユーザー
board_id: boards.sample.id # ランダムなBoard
)
end
全userからランダムに選び、全boardの中からランダムにtaskを追加する
deadline(期限)には、1〜30日後のランダムな先日付が入るようにする
commentの作成
taskはbelongs_to :user
、belongs_to :task
なのでそれぞれ紐づける
commentに必要なもの
- content・・・length: { minimum: 2, maximum: 100 }
- user_id
- task_id
commentを5つ作成
tasks = Task.all
5.times do
Comment.create!(
content: Faker::Lorem.sentence(word_count: 10),
user_id: users.sample.id, # ランダムなユーザーID
task_id: tasks.sample.id # ランダムなTask ID
)
end
全userからランダムに選び、全taskの中からランダムにcommentを追加する
rails db:seedを実行する
ターミナル画面で以下を実行する
rails db:seed
一気に実行したらエラーが発生したので、user→board→task→commentの順にわけてrails db:seed
を実行
実行するたびにダミーデータが作成されるので、実行済のコードはコメントアウトしておくこと