28
7

駅情報をcsvでシードデータに登録する

Posted at

初めに

以前とあるアプリを開発時に駅情報や路線情報が必要になり、色々と調べましたが情報を集めるのに苦戦したため記事を書こうと思い至りました。
間違っている等あればコメントよろしくお願いいたします。
また、本記事に関しては駅情報のみについて記載しますが、路線情報についても手順は一緒のため割愛致します。

手順

1,モデル作成

まずは対象のモデルを作成致します。

rails g model Station                   

2,マイグレーションファイルに記述

①先ほどのコードでマイグレーションファイルが作成されるので中身を記述して行きます。

def change
    create_table :stations do |t|
      t.integer :station_cd
      t.integer :station_g_cd
      t.string :station_name
      t.string :station_name_k
      t.string :station_name_r
      t.integer :line_cd
      t.integer :pref_cd
      t.string :post
      t.string :address
      t.float :lon
      t.float :lat
      t.date :open_ymd
      t.date :close_ymd
      t.integer :e_status
      t.integer :e_sort

      t.timestamps
    end
  end

②上記を記述したらマイグレーションを実行します。

rails db:migrate      

3,マスタデータ取得

色々とデータを取得できるサイトはありますが今回は駅データjpというサイトからダウンロード致します。
※ダウンロードするには無料の会員登録が必要なので注意です。

4,取得したものを配置

取得してきたものを/assets/csvフォルダを作成した配下に貼り付けます
スクリーンショット 2024-08-31 18.33.18.png

5,seed.rbに記述

以下に内容をseed.rbに記述します

require 'csv'

station_csv_file_path = 'app/assets/csv/station.csv'
CSV.foreach(station_csv_file_path, headers: true) do |row|
    Station.create!(row.to_hash)
end

6 ,seedデータ作成

最後にseedデータを実行して終了です

rails db:seed

最後に

以上で終了になります。これによりプルダウンの項目に表示させたりと色々おこなえるようになります。
拙い文章でしたが最後まで読んでいただきありがとうございました。

28
7
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
28
7