1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

複数のカラムをまとめて住所として設定する[GoogleMap] [Geocoding]

Posted at

#環境
ruby 2.6.5
rails 6.0.0
MySQL
Github

#実現させたいこと
Google Maps Platformを利用し、アプリケーションにマップを表示させる。
その際に、すでに構築しているデータベースのテーブル内の複数のカラムをまとめて住所として扱いたい

#記事を投稿するに至った背景
投稿主はアプリの作成の段階で、住所に関するカラムを「都道府県」、「市区町村」、「それ以降」というように分類しており、一方で、Qiitaに投稿されている記事では、ほぼ全てが一つのカラム(例 address)で完結させていた。
そのためデータベース状況が異なり、多くの記事を参考にさせていただいたが、うまくマップを表示させられなかったので解決までの過程を投稿します。

ですので、現段階で住所に関するカラムを1つのみで構成しようという方は以下の記事を参考にしてください。
https://qiita.com/osugi_san/items/72d58bf034dc2db9d02c

#前提
以下の文章は上記のURLの「住所に関するカラム以外」のプロセスを行ってからコーディングをお願いします。

投稿主のデータベース
テーブル board
カラム prefecture_id(都道府県),municipality(市区町村),edaban(番地)

#解決策
モデルに以下の文を記述

board.rb
  def address
    [self.prefecture.name,self.municipality,self.edaban].compact.join()
  end

このように入力することで、カラムのデータをaddressという変数にまとめることができます。

余談ですが、join()の()内にハイフンなどを置くことでデータ間に入力したものを置くことができます。

今回はデータとデータの間は空白であることが望ましいので記述しません。

最終的な記述は以下の通りです。

board.rb

()

geocoded_by :address
after_validation :geocode

def address
    [self.prefecture.name,self.municipality,self.edaban].compact.join()
end

()

これで無事にマップを表示させることができました。

#まとめ
ご覧いただきありがとうございました。

データベースを設計しなおせば良いのでは?と思った方もいるかと思いますが、おっしゃる通りです。
それでもよかったのですが、やり方が分からずDB設計をし直すのは、私個人のプライドが許さなかったので、どうにかして自力で解決をしました(笑)

同じようにデータベースの構成を崩したくない、2つ以上のカラムを使ってgeocodingしたい、という方々の手助けになれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?