Ma classe Address
a une méthode de classe geocode
qui retourne un tableau d'objets d'adresse dérivé du géocodage du paramètre de la méthode (si le géocodage résulte en une correspondance exacte, le tableau aura un élément). Une partie gênante à propos de l'écriture de cette méthode consiste à traduire les objets d'adresse GeoKit en mes objets d'adresse (par exemple, "street_address" -> "address1"). Y a-t-il une meilleure manière de faire cela?Faire bien fonctionner GeoKit avec ma classe d'adresse
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
J'avais oublié que 'Address.new' peut prendre un bloc. Très agréable! –