🌊

rails db:seedを活用した、レコード作成方法

2023/01/21に公開

背景

オリジナルアプリの作成後、サンプルの初期データを一つづつ登録するのがとても手間だったので、自動で大量投入する方法がないか調べていた所「rails db:seed」にたどり着きました。

環境

Mac 13.0.1
Rails 6.0.6
ruby 2.6.5p114
Userモデルにnameとbirthdayのカラムがある前提

rails db:seedとは

あらかじめ、作成したいレコード情報を「db/seeds.rb」ファイルに記述しておく事で、ファイルの記述に従いDBにレコードを投入してくれるコマンド

単体のレコードはもちろんですが、複数のレコードを投入するコードを記述する事も可能です。
今回は、大量のデータをDBに登録する方法として記述しています。

rails db:seedの利用手順

1. gemのinstall

gem 'activerecord-import'
gem 'faker'

※activerecord-importは配列を受け取ると、レコードを作成する「inportメソッド」を利用できます。
※fakerはランダムな情報を生成してくれます。

2. db/seeds.rbの記述

今回はUserモデルに100人分のユーザーを作成する記述です。
値はFakerを利用してランダムな名前とランダムな誕生日を生成しています。

users = []
100.times do |i|
  users << User.new(name: Faker::Name.name, birthday: Faker::Date.birthday)
end
User.import users

3. rails db:seedの実行

コマンドを実行して、特別エラーが発生しなければ、DBにレコードが登録されています。

rails db:seed

参考にさせていただいた情報

https://qiita.com/takehanKosuke/items/79a66751fe95010ea5ee

https://www.sejuku.net/blog/28395

https://twitter.com/yuu_prg/status/1334347158632288256#:~:text=Conversation&text=%40Yuu_prg-,テストコードを書く際にランダムで誕生日,と記述すればOK。

Discussion