seedsを使ったテーブルへのデータINSERT
Railsでテーブル作成後、seedsファイルを使用したデータの登録手順を記載する。
1.seedsファイルにseed対象のファイルを追加
seedsファイルに直接テーブルの作成ロジックを記載しても問題ないが、
テーブルの数が多くなった時に管理が煩雑になるので、テーブルごとにseedファイルを分け、
seedsファイルには各テーブルのseedファイルをrequireすると、いい感じになる。
db/seeds.rbに以下の内容を追記。
# dbディレクトリ以下のseedファイルを実行 table_names = %w(live_houses) table_names.each do |table_name| path = Rails.root.join('db', 'seeds', Rails.env, "#{table_name}.rb") if File.exist?(path) puts "Creating #{table_name}..." require(path) end end
2.各テーブルのseedファイルの作成
db/seeds/developmentディレクトリを作成し、各テーブルのseedファイルを作成する。
例)live_houses.rbを作成
# coding: utf-8 # 日本語を使用する際はutf-8を指定 #ライブハウステーブルへのINSERT LiveHouse.create( :name => 'QBハウス', :search_key1 => "きゅーびーはうす", :search_key2 => "QB", :zip_code => "000-0000", :prefecture => "東京都", :city => "XX区", :address => "3-3-3" ) LiveHouse.create( :name => 'BBQハウス', :search_key1 => "きゅーびーはうす", :search_key2 => "QB", :zip_code => "000-0000", :prefecture => "東京都", :city => "XX区", :address => "3-3-3" ) # 以下INSERTしたいレコード数分続く
3.rake:seedを実行
tomy2002:~/workspace $ rake db:seed
4.確認とやり直す場合
正しくデータが投入されたか調べるには、以下のコマンドで確認。
rails r 'puts LiveHouse.count'
やり直したい場合はdb:resetを実行すると、db/scheme.rbの内容を読み込み、
データベースの構造を作り直して、再度seedデータを投入してくれる。