🗾

Railsで地方・都道府県マスタをつくる

2022/12/01に公開約4,200字

はじめに

稀に地方・都道府県のマスタをつくることがあるので、今後のためにseedファイルにまとめました。データの作成時にseed-fuを使用しています。

https://github.com/mbleigh/seed-fu

migration ファイルの作成

$ rails g model Region name:string
$ rails g model Prefecture region:references name:string name_en:string sort:integer
$ rails db:migrate

seed ファイルの作成

地方・都道府県

db/fixtures/01_regions.rb
Region.seed_once(:id,
  { id: 1, name: "北海道" },
  { id: 2, name: "東北" },
  { id: 3, name: "関東" },
  { id: 4, name: "中部" },
  { id: 5, name: "近畿" },
  { id: 6, name: "中国" },
  { id: 7, name: "九州" },
)
  • 地方区分はプロジェクトによって粒度や名称が異なると思うので、状況に合わせて調整します。

都道府県

db/fixtures/02_prefectures.rb
Prefecture.seed_once(:id,
  { id: 1, region_id: 1, name: "北海道", name_en: "hokkaido", sort: 1 },
  { id: 2, region_id: 2, name: "青森県", name_en: "aomori", sort: 2 },
  { id: 3, region_id: 2, name: "岩手県", name_en: "iwate", sort: 3 },
  { id: 4, region_id: 2, name: "秋田県", name_en: "akita", sort: 4 },
  { id: 5, region_id: 2, name: "宮城県", name_en: "miyagi", sort: 5 },
  { id: 6, region_id: 2, name: "山形県", name_en: "yamagata", sort: 6 },
  { id: 7, region_id: 2, name: "福島県", name_en: "fukushima", sort: 7 },
  { id: 8, region_id: 3, name: "茨城県", name_en: "ibaraki", sort: 8 },
  { id: 9, region_id: 3, name: "栃木県", name_en: "tochigi", sort: 9 },
  { id: 10, region_id: 3, name: "群馬県", name_en: "gunma", sort: 10 },
  { id: 11, region_id: 3, name: "埼玉県", name_en: "saitama", sort: 11 },
  { id: 12, region_id: 3, name: "千葉県", name_en: "chiba", sort: 12 },
  { id: 13, region_id: 3, name: "東京都", name_en: "tokyo", sort: 13 },
  { id: 14, region_id: 3, name: "神奈川県", name_en: "kanagawa", sort: 14 },
  { id: 15, region_id: 4, name: "山梨県", name_en: "yamanashi", sort: 15 },
  { id: 16, region_id: 4, name: "長野県", name_en: "nagano", sort: 16 },
  { id: 17, region_id: 4, name: "新潟県", name_en: "niigata", sort: 17 },
  { id: 18, region_id: 4, name: "富山県", name_en: "toyama", sort: 18 },
  { id: 19, region_id: 4, name: "石川県", name_en: "ishikawa", sort: 19 },
  { id: 20, region_id: 4, name: "福井県", name_en: "fukui", sort: 20 },
  { id: 21, region_id: 4, name: "静岡県", name_en: "shizuoka", sort: 21 },
  { id: 22, region_id: 4, name: "愛知県", name_en: "aichi", sort: 22 },
  { id: 23, region_id: 4, name: "岐阜県", name_en: "gifu", sort: 23 },
  { id: 24, region_id: 4, name: "三重県", name_en: "mie", sort: 24 },
  { id: 25, region_id: 5, name: "滋賀県", name_en: "shiga", sort: 25 },
  { id: 26, region_id: 5, name: "京都府", name_en: "kyoto", sort: 26 },
  { id: 27, region_id: 5, name: "大阪府", name_en: "osaka", sort: 27 },
  { id: 28, region_id: 5, name: "兵庫県", name_en: "hyogo", sort: 28 },
  { id: 29, region_id: 5, name: "奈良県", name_en: "nara", sort: 29 },
  { id: 30, region_id: 5, name: "和歌山県", name_en: "wakayama", sort: 30 },
  { id: 31, region_id: 6, name: "鳥取県", name_en: "tottori", sort: 31 },
  { id: 32, region_id: 6, name: "島根県", name_en: "shimane", sort: 32 },
  { id: 33, region_id: 6, name: "岡山県", name_en: "okayama", sort: 33 },
  { id: 34, region_id: 6, name: "広島県", name_en: "hiroshima", sort: 34 },
  { id: 35, region_id: 6, name: "山口県", name_en: "yamaguchi", sort: 35 },
  { id: 36, region_id: 6, name: "香川県", name_en: "kagawa", sort: 36 },
  { id: 37, region_id: 6, name: "愛媛県", name_en: "ehime", sort: 37 },
  { id: 38, region_id: 6, name: "徳島県", name_en: "tokushima", sort: 38 },
  { id: 39, region_id: 6, name: "高知県", name_en: "kochi", sort: 39 },
  { id: 40, region_id: 7, name: "福岡県", name_en: "fukuoka", sort: 40 },
  { id: 41, region_id: 7, name: "佐賀県", name_en: "saga", sort: 41 },
  { id: 42, region_id: 7, name: "長崎県", name_en: "nagasaki", sort: 42 },
  { id: 43, region_id: 7, name: "熊本県", name_en: "kumamoto", sort: 43 },
  { id: 44, region_id: 7, name: "大分県", name_en: "oita", sort: 44 },
  { id: 45, region_id: 7, name: "宮崎県", name_en: "miyazaki", sort: 45 },
  { id: 46, region_id: 7, name: "鹿児島県", name_en: "kagoshima", sort: 46 },
  { id: 47, region_id: 7, name: "沖縄県", name_en: "okinawa", sort: 47 }
)
  • 地方区分やsortの有無は状況に合わせて調整します。

seed データの登録

実行する順序を指定するためにファイル名にprefixを付けています。

  • 01_regions.rb
  • 02_prefectures.rb
$ rails db:seed_fu

参考

https://ja.wikipedia.org/wiki/日本の地域

Discussion

ログインするとコメントできます