A Little Each Day

note to self

Railsで別モデルにマスタデータを持たずに都道府県データを扱う

こんにちは。本日はマスタデータを持たなくても都道府県データを扱うことができるjp_prefectureの使い方についてです。

サービスをつくる上で都道府県データを扱う機会が多いと思いますが、jp_prefectureなら簡単に都道府県データを扱うことができるので個人的にオススメのGemです。

マスタデータ

Railsで都道府県のデータを持つ時に、専用のモデルを作成してDBにマスタデータを持つことが多いと思います。

(おそらく)今後も変わらないであろう都道府県のために専用のマスタデータを持つのはなんだか面倒だと思う人も多いと思います。

jp_prefectureというGemを使えば、わざわざ都道府県のためにマスタデータを持つことなく、都道府県データを扱えるのでオススメです。


jp_prefectureを読み込む

基本的な使い方としてはgemでインストールして、都道府県データを持ちたいモデルに読み込むという流れです。

gem install jp_prefecture
$ bundle install


都道府県のデータを持ちたいモデルにjp_prefectureを読み込みます。

# 都道府県

include JpPrefecture
jp_prefecture :prefecture_code


そして都道府県データを格納しておくカラムを追加します。


ここでは例としてplaceモデルにprefecture_codeカラムを持たせます。

$ rails g migration add_prefecture_code_to_places prefecture_code:integer


あとは都道府県を選択するフォームを表示したいところにcollection_selectを使いセレクトボックスをつくります。

<%= f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name %>


これで別モデルに都道府県データを持つことなく都道府県データを持つことができました。


簡単に都道府県データを持つことができて、すごく便利なGemですね。



本日は以上です。