🌊
rails db:seedを活用した、レコード作成方法
背景
オリジナルアプリの作成後、サンプルの初期データを一つづつ登録するのがとても手間だったので、自動で大量投入する方法がないか調べていた所「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
参考にさせていただいた情報
Discussion