rails
を使いはじめたときに最初につまづいた、 schema.rb
ファイルとマイグレーションファイルの関係について自分用備忘録。
図解
-
migrationファイルと
schema.rb
は直接無関係。 -
schema.rb
はdb:schema:dump
タスクにより、現在参照しているDBのテーブル構造から作成される。 -
マイグレーションがどこまで実行されているかは関係ない。
-
db:migrate
(db:rollback
) タスクの実行でmigrationファイルの実行が行われる。 -
その後自動的に
db:schema:dump
も実行されるのでschema.rb
も更新される。 -
db:schema:load
タスクでschema.rb
の内容を現在参照しているDBに適用。 -
新規作成した空っぽのDBにテーブル構造などをロードする際に使う。
その他、db関連のrakeタスクまとめ
db:create
DBの作成。
db:drop
DBの削除。
db:reset
以下のショートカット。
db:drop
db:create
db:schema:load