«

»

7月
12

rails3 DBのマイグレーションについてメモ

RoRで既にテーブル生成用のマイグレーションファイルは存在して、alter tableしたい時のメモ。

カラム追加のマイグレーションファイル(=クラス)を作りたい場合

 $ rails generate migration [classname] [ [column_name]:[type] ... ]

e.g.) rails g migration AddAuthorToUsers author_id:integer (gはgenerateの省略)

ここでクラス名をAdd[anyname]To[table_name]とすると、changeメソッドが作られる。
anyname部分は複数のカラムを追加する場合等もあるので任意の名称で良い。table_nameはテーブル名を記述。
それ以外の命名だとchangeの代わりにup,downメソッドが作られる場合がある。
(以前はAddで始まる場合でも2パターン、self.up/self.downに記述の必要(メソッド名は同様だが特異メソッド)があったが現在はchangeが器用に振る舞ってくれるらしい。)

やっぱり作ったマイグレーションファイル(=クラス)を削除したい場合

 $ rails destroy migration [classname]

e.g.) rails d migration AddAuthorToUsers (dはdestroyの省略)

マイグレートを実行する(前回の実行から複数のバージョンアップがあれば一括実行)

 $ rake db:migrate

やっぱりマイグレートを取り消す場合(但しこの場合は1つ前のバージョン)

 $ rake db:rollback

今のバージョンを知りたい場合

 $ rake db:version

ここで表示されるバージョン方法はDBに格納されている。

 > select * from schema_migrations;

マイグレーションファイルをrails d migrationで消さず、直接ファイル操作で消してしまったりして、
db:migrateやdb:rollbackが上手く動かない場合は、このテーブルのレコードとマイグレーションファイル名の中の日付との不整合を手動で直すとなんとかなると思われる。

コメントを残す

メールアドレスは公開されません

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>