Yamlファイルを活用してDBにデータを挿入する


1)背景

Yamlファイルについて、環境設定などの用途で使用されることが多いですが、アプリケーションでデフォルトデータを予めデータベースに登録したい場合なども、csvファイルと比較してyamlファイルは便利です。

私のようにポートフォリオを作成していると、サンプルデータについて、見てもらう人が意識せず、セッティングしておく必要があります。ソースには書かない、csvは可読性が低いなど、yamlが登場する場面だと思います。

2)環境

項目 内容
OS.Catalina v10.15.4
Ruby v2.5.1
Ruby On Rails v5.2.4.3

3)内容

対応1)yamlファイルの作成
細かな設定ができますが。ここでは省略します。後述するデータイメージを参照して下さい。

default_user.yml
- id: 1,
  password: 111111
  name: '未登録ユーザ'
  email: '[email protected]'

対応2)yamlを読み込んで出力するサービスを作成する
少し長いですが、以下の通りサービスを作成しました。
require('yaml')で機能拡張が必要になります。

user_insert_service.rb
 1 class MakeDefaultDataService
 2   require('yaml')
(省略)

 3   def insert_user_data
 4     begin
 5       default_user = User.new
 6       insert_data = YAML.load_file('app/lib/yaml/default_user.yml')
 7       insert_data.each do | data |
 8         default_user.id = data["id"]
 9         default_user.password = data["password"]
10         default_user.name = data["name"]
11       end
12       default_user.save
13     rescue
14       p "(ユーザ)データ登録に失敗しました。"
15     end
16   end

このメソッドを実行した時、4行目の「insert_data」変数には以下のようにデータがセットされています。

[{"id"=>1, "password"=>111111, "name"=>"未登録ユーザ", "email"=>"[email protected]"}]

あとは、適宜データを加工して、データベースにセットするだけですね。
便利ですね。
以上です。