Fakerを利用しダミーデータを作成

掲示板の一覧にダミーデータを投入する。

gem Fakerのインストール。
Fakerはdevelopmentとtest環境にインストールする。

group :development, :test do
#...
  gem 'faker'
#...
end

bundle installで完了。

データベース上にダミーデータを生成

今回はBoardモデルのダミーデータを20個作る。 データは公式のREADMEからとってくる。

20.times do
  title = Faker::Games::Pokemon.name
  body = Faker::Games::Pokemon.move
  user = User.offset(rand(User.count)).first
  Board.create!(
    title: title,
    body: body,
    user: user
  )
end

seedに書いた内容をデータベースへ反映。

$ rails db:seed

データが作成されたか確認。 f:id:meo2:20210509035116p:plain

なぜcreate!を使うのか。

createとcreate!の違い
createの場合はユーザーが無効なときfalseを返す。一方、create!は例外を発生させる(例外が発生した時点で処理が止まる)。よって、デバッグが安易になるのでcreate!を使用したほうがいい。

user = User.offset(rand(User.count)).first

について

  • モデル.offset(取得開始位置) 指定位置からレコードを取得。
  • rand 引数に整数を渡したら0以上指定した整数未満の整数を返す。
  • first 最初のレコードを取得。

20個のダミーデータから0〜19個間でランダムに数字を生成して、最初のレコードを取得している。 User.offset(18).firstなら18以降から最初のUserを取得する。