woshidan's blog

そんなことよりコードにダイブ。

RasilでcsvやExcelのデータを読み込んでデータベースに保存する

先週は少しぐれていたのですが、今週は親知らずと戦っていました。

人生は戦いです。

次は戦いたくないので口腔外科に行きます。

 

さて、テスト用のデータを一気に入力したいとき、正直Excelcsvからデータを読み込めると便利だし、

まだまだなんちゃって情報系であるのでファイルフォームから登録できるとありがたい。

 

というわけで、

#396 Importing CSV and Excel - RailsCasts

 

を参考にExcelcsvのデータを読み込めないかやってみた。

(まあ、csvはrooを使わなくてもできるとは思うけれど、楽だったので。)

 

最低限必要な手順をざっくり書くと以下の通り。

  1. 必要なgemを入れる
  2. ファイル送信フォームを作る
  3. フォームから送られるファイルを受け取るアクションを作る
  4. データを登録するオブジェクトのモデルに対して、データを読み出す処理をモデルに書く
  5. 4の処理を3のアクションから呼び出す

 

必要なgemを入れる

csv, iconv, rooの3つのgemを入れます。

Empact/roo · GitHub

rooというのはcsv,Excel,googleスプレッドシートなどなどをよさげな形に読み込んでくれるgemです。

本当はiconvとcsvだけでもガリガリ頑張って書いたらいけるとは思いますが、

紹介されているし、楽なので、使います。

 

ファイル送信フォームを作る

こんな感じ。

 

ルーティングの設定は以下の通り。

フォームから送られるファイルを受け取るアクションを作る

データを登録するオブジェクトのモデルに対して、データを読み出す処理をモデルに書く

実はnoticeとかちょっと忘れてたなんて言えません。

もっと時間があればいいのになぁ。