2
Meine Address
Klasse hat eine geocode
Klassenmethode, die ein Array von Adressobjekten aus Geokodierung der Methode Parameter (wenn die Geocodierung ergibt eine genaue Übereinstimmung, das Array wird ein Element) zurückgegeben.Machen Sie GeoKit gut mit meiner Address-Klasse
Ein lästiger Teil beim Schreiben dieser Methode ist das Übersetzen der GeoKit-Adressobjekte in meine Adressobjekte (z. B. "street_address" -> "address1"). Gibt es einen besseren Weg, dies zu tun?
class Address < ActiveRecord::Base
def self.geocode(string)
return nil if string.nil?
results = Geokit::Geocoders::GoogleGeocoder.geocode(string)
address_objects = Array.new
results.all.each do |r|
params = Hash.new
params['address1'] = r.street_address
params['city'] = r.city
params['zipcode'] = r.zip
params['state'] = State.find_by_abbr(r.state)
params['country'] = Country.find_by_iso(r.country_code)
new_address = Address.new(params)
new_address.single_line_address = r.full_address
address_objects << new_address
end
return address_objects
end
end
ich vergessen hatte, dass 'Address.new' einen Block nehmen. Sehr schön! –