環境など
- Rails 6.1.3
- Ruby 2.7.2
- geocoder 1.6.7
郵便番号から市区町村を取得する
gem geocoderを使うと、郵便番号から住所や経度緯度などを取得することができる。Geocoder.search
は配列を返すので、first
でGeocoder::Result::Google
のインスタンスを取得する。引数にparams: { language: 'ja' })
を指定すると日本語で情報を取得できる。
result = Geocoder.search(postal_code, params: { language: 'ja' }).first p result.class => Geocoder::Result::Google
eocoder::Result::Google
には「東京都渋谷区恵比寿」のような日本の市区町村文字列を取得するメソッドが用意されていないので、自前で文字列を構成する必要がある。例えばこんな感じ。
def municipalities result = Geocoder.search('1500013', params: { language: 'ja' }).first if result.present? result.address_components_of_type(:administrative_area_level_1).first['long_name'] + result.address_components_of_type(:locality).first['long_name'] + # ここはresult.city でもいける result.address_components_of_type(:sublocality_level_2).first['long_name'] else '' end end