【rails】fakerでuser・board・task・commentを作成

※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。

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に必要なもの
  • email
  • 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 :userbelongs_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 :userbelongs_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を実行

実行するたびにダミーデータが作成されるので、実行済のコードはコメントアウトしておくこと