#!/usr/bin/env ruby require 'rubygems' require 'fastercsv' def import(csv_file, col_sep = ';') i = 0 header = Array.new FasterCSV.foreach(csv_file, :col_sep => col_sep) do |row| if (i == 0) row.each do |col| klass = col.split('.')[0] method = col.split('.')[1] header << {:klass => klass, :method => method} end else header.each do |col| case col[:klass] when 'VehicleMake' then new_vehicle_make(row[0], row[2]) when 'VehicleModel' then new_vehicle_model(row[1], row[0], row[2]) end end end i += 1 end end def new_vehicle_make(name, market) market = Market.find_by_name(market.to_sym) existing = VehicleMake.find(:first, :conditions => ['name = ? AND market_id = ?', name, market.id]) if existing.nil? && !name.blank? puts name vm = VehicleMake.new vm.name = name vm.market = market vm.save end end def new_vehicle_model(name, make, market) market = Market.find_by_name(market.to_sym) vehicle_make = VehicleMake.find(:first, :conditions => ['name = ? AND market_id = ?', make, market.id]) existing = vehicle_make.vehicle_models.find_by_name(name) if existing.nil? && !name.blank? puts name vm = VehicleModel.new vm.name = name vm.vehicle_make = vehicle_make vm.save end end # import('/home/rapha/youngtimer.csv') # require '/home/rapha/import.rb'; import('/home/rapha/youngtimer.csv')