1
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-06-13

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: 'example@test.com'

対応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"=>"example@test.com"}]

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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1