db/seed.rbで初期データ投入 (rake db:seed)
Rails 2.3.4より、Seed Dataという概念が加わりました。
システムの動作に必須のマスターデータなどの初期データをmigrationから切り離すことができます。
例えば都道府県データのようなものは、ほとんど普遍であろうし、なければシステムがうまく動作しない。こういったものをdb/seed.rbに設定し、rake db:seedを実行する。
[参考記事] rakeのタスク一覧
db/seeds.rbの書き方
db/seeds.rbは単に実行されるというだけで特に決まりはなく、単にseeds.rbにレコードを追加するRubyのコードを書いていくだけです。
Category.create(:name => '北海道') Category.create(:name => '青森県') ……
とか
%w{北海道 青森県 ……}.each do |name| Category.create(:name => name) end
db/seeds.rbの実行
単純にseedだけを投入する場合は次のタスクを使用します。
rake db:seed
ただしこのタスクはdb/seeds.rbを実行するだけのコードなので、既にデータが読み込まれているかどうかは判断しません。
このためdb/seeds.rbの書き方によっては実行するごとに値が投入されるということも起こります。
または次のタスクを実行したときにも読み込まれます。
rake db:setup
この場合、データベースを作り直すため、稼働中のシステムではデータが空になってしまいます。
関連記事
- NetBeansでRuby on Railsを開発する
- WindowsでRuby on Railsサーバ構築 (WEBrick編)
- Ruby on Railsをクリックだけで起動する方法
- WindowsでRuby on Railsサーバ構築 (Mongrel編)
- URLとコントローラ・アクション、ビューの関係
- rakeのタスク一覧
- rake --helpとrake -Tの実行結果
- Ruby on Railsのマイグレーションの型とMySQLの型の対応表
- Ruby on Railsをバージョンを指定してインストールする方法
- WEBrick互換の軽量WebサーバMongrel
- EclipseでRuby on Rails開発環境を作る RadRails
- Ruby on Railsのインストールと起動
- ディレクトリ構成
- Ruby on Railsとは
スポンサーリンク