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

この場合、データベースを作り直すため、稼働中のシステムではデータが空になってしまいます。

関連記事

スポンサーリンク

-単項演算子 負号

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る