26 lines
577 B
Ruby
26 lines
577 B
Ruby
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
|