Ruby on Rails で、CSVのインポート/エクスポート機能を実装する上での参考情報をご紹介します。
Ruby 1.9 は FasterCSV が標準の CSV クラスとして採用されているので、require “csv” すればすぐに使える。
・Ruby on Rails Screencasts - RailsCasts
CSVインポート
・#396 Importing CSV and Excel - RailsCasts
roo というスプレッドシート(Open Office, Excel, Google Spreadsheetsなど)を操作する gem を使っている。
・roo:スプレッドシートを操るRubyライブラリ « TORQUES LABS
CSVエクスポート
・#362 Exporting CSV and Excel - RailsCasts
・Ruby1.9とRailsでCSV出力(SJIS) #Rails #Ruby - Qiita
・[rails] csvつくって出力するのよメモ | おれせか
CSVファイルはExcelから作成されることが多くて、文字コードをShift_JISからUTF-8へ変換して扱う必要があります。
その辺のノウハウがまとめられています。
・CSV を文字コード変換しつつロード #Ruby - Qiita
普通はテストで使う fixture_file_upload メソッドで CSV ファイルをアップロードしてから、モデルに追加したクラスメソッド import を呼び出してやります。
> include ActionDispatch::TestProcess
> file = fixture_file_upload "tmp/test.csv", "text/comma-separated-values"
=> #>
> Product.import(file)
(0.2ms) BEGIN
["a", "b", "c", "d"]
["1", "2", "3", "4"]
(0.1ms) COMMIT
=> <#CSV io_type:File io_path:"/var/folders/46/bg9j7wkn5qg9n895016mlvk00000gn/T/test.csv20130124-12060-h3mn08" encoding:UTF-8 lineno:2 col_sep:"," row_sep:"\\r" quote_char:"\\"">