CSVファイルのfixtureをmigrationで読み込む
CSVファイルのfixtureは、rake db:fixtures:loadコマンドで読み込めるが、開発中はDBを何度も初期化する(rake db:migrate:reset)ので、初期化後に毎回実行するのが面倒。
そこで、fixtureをrake db:migrateで読み込めるようにした。
ruby script/generate migration LoadFixtures
とコマンドを打つと、プロジェクトフォルダ/db/migrateに、20101206130501_load_fixtures.rb のような名前のファイルができる。そのファイルに以下を入力すればよい。ごく普通に、CSVファイルからデータを取得して、モデルをcreateするだけ。
require 'csv' class LoadFixtures < ActiveRecord::Migration def self.up header_line = true CSV.open("#{RAILS_ROOT}/test/fixtures/areas.csv", 'r') do |lat,lng,address| if header_line header_line = false next end Area.create(:lat => lat, :lng => lng, :address => address) end # records = Area.find(:all) # puts "Added #{records.count} areas in migration." end def self.down end end