2
私のAddress
クラスには、メソッドのパラメータをジオコーディングして派生したアドレスオブジェクトの配列を返すgeocode
クラスメソッドがあります(ジオコーディングの結果が完全一致した場合、配列には1つの要素があります)。住所クラスでGeoKitをきれいに再生する
このメソッドを記述する際の厄介な点の1つは、GeoKitのアドレスオブジェクトを自分のアドレスオブジェクトに変換することです(例: "street_address" - > "address1")。これを行うより良い方法はありますか?
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
について。非常に素晴らしい! –