🐕

Rails|csvファイルを利用したテストデータの挿入

2023/09/21に公開

個別のデータを挿入する場合は、こちらの記事を参照。
https://zenn.dev/airiin/articles/4bf00979ca7101

csvファイルを作成する

まず、テストデータとして挿入したいデータを作成する。
エクセルやGoogleスプレッドシートで元データを作成し、「csvで保存」をする。

作成したcsvファイルは db/scvディレクトリに保存する。

seeds.rbの編集

次に、 seeds.rbを編集する。

seeds.rb

# - - - - - - - - - - コース情報 - - - - - - - - - -

require "csv"

CSV.foreach('db/csv/courses.csv', headers: true) do |row|
  Course.create!(
    school_id: row['school_id'],
    name: row['name'],
    admission_month: row['admission_month'],
    duration: row['duration']
  )
end

require "csv"
scvファイルの読み込み。

CSV.foreach
指定されたCSVファイル('db/csv/courses.csv')を行ごとに読み込むためのメソッド。

headers: true
scvの最初の行をヘッダーとして扱うオプション。

do |row|
csvファイルの行ごとに繰り返し処理を開始する。

Course.create!(...)
Courseモデルの新しいレコードを作成し、保存する。
createではなくcreate!を使用することで、
バリデーションエラーが発生した場合にログに表示されるようにする。

school_id: row['school_id'], ...
初めのschool_idはカラム名を表している。
row['school_id']はcsvファイルの各行からschool_id列のデータを取得することを表している。

Discussion