rails6 APIから取得したデータでseedを実行する

rails6で、APIから取得したデータでseedを実行してデータを作成する手順を記述してます。railsのバージョンは6.1.0です。
環境
- OS ubuntu20.10
- ruby 2.7.2
- rails 6.1.0
- Postgresql 13.1 (dockerで構築)
APIデータ作成
Fakerとjson-serverで作成してます。
取得するAPIは、下図の構造となってます。

テーブル作成
ここでは「Customer」というモデルで「customers」テーブルを作成してます。
rails g model Customer name:string email:string
rails db:migrate
「customers」テーブル

seedファイル作成
「db」配下の「seed.rb」を以下のように編集します。
# 取得するAPI
uri = URI.parse("http://url or host:3001/users")
# APIリクエスト
json = Net::HTTP.get(uri)
# jsonから配列に変換
arr = JSON.parse(json)
# データ確認
puts arr
# データ作成
Customer.create!(
arr
)
実行します。
rails db:seed
データが作成されていることが確認できます。

データを作成する箇所は、以下のようにしても同じです。
arr.each do |i|
Customer.create!(
{ id: i["id"], name: i["name"], email: i["email"] }
)
end
また、値が存在する場合は更新、ない場合は追加する場合は以下となります。
arr.each do |i|
if Customer.find_by(id: i["id"])
id = Customer.find_by(id: i["id"])
id.update!({ name: i["name"], email: i["email"] })
else
Customer.create!({ id: i["id"], name: i["name"], email: i["email"] })
end
end
-
前の記事
javascript onselectでテキストの選択イベントを取得する 2021.01.02
-
次の記事
Nuxt.js ライブラリ「vue-splide」をインストールしてカルーセルを実装する 2021.01.02
コメントを書く