RasilでcsvやExcelのデータを読み込んでデータベースに保存する
先週は少しぐれていたのですが、今週は親知らずと戦っていました。
人生は戦いです。
次は戦いたくないので口腔外科に行きます。
さて、テスト用のデータを一気に入力したいとき、正直Excelやcsvからデータを読み込めると便利だし、
まだまだなんちゃって情報系であるのでファイルフォームから登録できるとありがたい。
というわけで、
#396 Importing CSV and Excel - RailsCasts
を参考にExcelやcsvのデータを読み込めないかやってみた。
(まあ、csvはrooを使わなくてもできるとは思うけれど、楽だったので。)
最低限必要な手順をざっくり書くと以下の通り。
- 必要なgemを入れる
- ファイル送信フォームを作る
- フォームから送られるファイルを受け取るアクションを作る
- データを登録するオブジェクトのモデルに対して、データを読み出す処理をモデルに書く
- 4の処理を3のアクションから呼び出す
必要なgemを入れる
csv, iconv, rooの3つのgemを入れます。
rooというのはcsv,Excel,googleスプレッドシートなどなどをよさげな形に読み込んでくれるgemです。
本当はiconvとcsvだけでもガリガリ頑張って書いたらいけるとは思いますが、
紹介されているし、楽なので、使います。
ファイル送信フォームを作る
こんな感じ。
ルーティングの設定は以下の通り。
フォームから送られるファイルを受け取るアクションを作る
データを登録するオブジェクトのモデルに対して、データを読み出す処理をモデルに書く
実はnoticeとかちょっと忘れてたなんて言えません。
もっと時間があればいいのになぁ。