Ruby
Rails

schema.rbとmigrationファイルの関係をまとめてみたよ

rails を使いはじめたときに最初につまづいた、 schema.rb ファイルとマイグレーションファイルの関係について自分用備忘録。


図解

Untitled Diagram.jpg


  • migrationファイルとschema.rbは直接無関係。


  • schema.rbdb: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