早々に帰宅しサケを呑むんだがアレてはいかん
とゆー事で Ruby on Rails をいぢる。
ココ (task*pad.jp Imitation with Ruby on Rails) を参考にしつつ migration に着目しつつ動作確認したんですが、以下に migration に関する備忘録を。
Migration 定義内でデータ追加する場合には、先に model を作成
例えば上記サイトの例にて states テーブルを作成する Migration 定義を行ない、行を追加する場合には先に model を作成しておく必要あり。
こんな感じ
$ script/generate model state (出力略) $ script/generate migration create_state (出力略) $ emacs -nw db/002_create_state.rb (略) $ rake migration
んでねーと、例えば上記の 002_create_state.rb にて以下のようなコードがある場合、異常終了する。
State.create :id => '0', :value => 'not yet' State.create :id => '1', :value => 'Done!' State.create :id => '2', :value => 'Ooups!'
ま、State クラスなんて作ってないんだから当たり前なんだが。
self.up に不具合がある場合、self.down が正常に動作しない
スミマセン。これはきちんと動作確認してませんが、少なくとも rake migrate が NG だったケースでは VERSION 指定しても drop_table (self.down 内に記述) が動作してませんでした。self.up に失敗した場合は、手動で self.down な処理 (テーブル削除やらカラムの追加 | 削除等) を実行してリトライの必要あり。
最初のバージョンに戻すには rake migrate VERSION=0
がしかし、scheme_info テーブルは残る。当たり前か。