🗾
Railsで地方・都道府県マスタをつくる
はじめに
稀に地方・都道府県のマスタをつくることがあるので、今後のためにseedファイルにまとめました。データの作成時に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
参考
Discussion