Ruby on Rails – 開発中のテーブル調整

「最初にガチガチに設計してから開発する」というスタイルをとらない場合(個人開発・趣味開発の場合はほとんどがあてはまると思います)、開発が進行するに伴って、モデル(データベーステーブルの設計)を変更していきたいと思うはずです。

このようなとき、先の記事にも書きましたが、db/migrateにあるファイルを変更するだけでは、データベースに反映が行われない場合があります。正しくは、マイグレーション機能を使ってインクリメンタルに変更していかなければなりません。しかし、個人で開発する場合、これは面倒です。テーブル数が少ない、カラム数が少ない、といった小規模開発の場合は、とくに当てはまります。

そんなわけで、たぶん正しいやり方ではありませんが、db/migrateのファイルを直接編集する場合の力技的な方法をメモしておきます。

1
2
3
$ rm db/migrate/*.sqlite3 db/schema.rb
$ rake db:create
$ rake db:migrate

要は、データベースファイルとスキーマファイルを削除して、データベース関連ファイルを再構築するだけです。すでに完成したバージョンの上で動かしたい場合は、その時点のデータベースファイルとスキーマファイルを保存しておいて、巻き戻したいときはそれらのファイルで上書きコピーしてしまえばいいということになります。このとき、編集するdb/migrateのファイルを間違えないように注意(そんなことはしないと思いますが…)。