Railsのmigrationを作るときの注意点、
- 複数テーブルにわたる変更でもテーブル単位でmigrationを複数作る。
- 例えば、あるカラムを新しいテーブルに移行したいなら createテーブル → データ移行 → 元テーブルからremove_columnという3つのmigrationを作る。
- 手抜きしないでdownも書く。
これを守らないと、あとでやり直したくなったとき面倒くさいのと、途中でエラーが出たときに泣ける。データ移行は、execute使ってSQL一発でもいいけど、ActiveRecordで書いても良い。
ところで、えせMVCとか話題みたいだけど、Railsを使って1リクエストで関連の無い複数テーブルを書き換えるようなビジネスロジックの厚いアプリ作るのが間違えてないか? RailsってREST的に1リクエストで1つのテーブル、せいぜいbelongs_toかhas_oneで関連してるテーブルの操作までで済むようなアプリ向けだと思うんだけど。
これってGAEも同じだよなあ。同じエンティティグループに属さないとそもそもトランザクション効かないから、1リクエストで重厚なデータ操作が必要なアプリには向かないように思う。