require 'fastercsv' class Map < ActiveRecord::Base def self.from_city_name(city_name) self.find_or_initialize_by_name(city_name).save! end def self.rand(count = 2) self.find(:all, :order => 'RANDOM()', :limit => count) end def self.import(csv_filename) FasterCSV.parse(open(csv_filename), :headers => true, :header_converters => [:downcase, :symbol]).each do |row| map = self.find_or_initialize_by_name( "#{row[:city]}, #{row[:country]}" ) map.save if block_given? yield map end end end end