2012年2月12日日曜日

rake db:seedでcsvを使う

今回はRuby on Railsの話です。
rake db:seed
というコマンドでデータベースに初期データを流し込めます。
この流しこむデータはdb/seeds.rbに記述します。
そこでcsvを読み込んでデータを作る処理を書きます。

require "csv"

CSV.foreach("csvファイルへのパス") do |row|
  Book.create(:name => row[0], :price => row[1])
end

一応、解説すると各行が毎回カンマ区切りの配列としてrowに入ってきます。各データを番地を指定して、テーブルの対応するフィールドに割り当てます。
すごく簡単ですね。

ファイルパスはseeds.rbからではなくプロジェクトのルートからの相対パス?
自分は絶対パス指定しました。
csvのデータを色々処理してから流し込めるので便利ですね。