【Rails】has_many – belongs_toで都道府県データを持てるようにする

都道府県データを扱う方法は色々あるかと思いますが、本記事ではhas_many – belongs_toのリレーションで、Userが都道府県データを持てるように実装したいと思います。ちなみにgemライブラリで実装する場合はgem ‘jp_prefecture’があります。

マイグレーション

まずは、都道府県名を入れる、Prefectureモデルを作ります。

db/migrate/20xxxxx_create_prefectures.rb

Userがprefecture_idを持てるようにreferencesを追加します。

db/migrate/20xxxxxx_add_prefecture_ref_to_users.rb

$ rails db:migrateします。

リレーション

app/models/prefecture.rb

app/models/user.rb

seedデータ

seedデータの編集が簡単なseed-fuを使ってseedデータをいれていきます。

db/fixtures/prefecture.rb

$ rails db:seed_fuを実行します。

コントローラー

create/updateできるように、ユーザーのストロングパラメータに:prefecture_idを追加します。

app/controllers/users_controller.rb

ビュー

form内はcollection_selectでプルダウンメニューにします。

app/views/users/_form.html.erb

app/views/users/show.html.erb

カウント数を取得

一つのPrefectureが持っているUser数を取得するには、countメソッドを使います。

以上です!ご覧いただき、ありがとうございました!!😄


投稿者:

Shuji Tenra

「仕事に特化したQ&AサイトJobQuery【ジョブクエリ】」の開発/運営をしています。https://jobquery.jp