RailsのMigrationについてのメモ
最近仕事でRailsを使うようになりました。
そこでDB周りを担当することになったのですが手順書にはER図をつくってそこからDDLを吐き出して、とあります。
・・・あれ、RailsってMigrationって機能なかったっけ?
と、思いつつも手順書があって今までそのとおりやってるんなら、
とそのやり方でやってたんですが、どうにも面倒くさい。
それ以上にRailsを使うのにRailsの流儀に沿ってないのがなんとも。。
ということで、Migrationする運用に変更しました。
特にMigrationしていない理由もないとのことだったので。(これが一番よくわからないんですが。。)
バックアップだけ取ってModel全削除。
RailsはgenerateするとModelクラス意外にもテストクラスやmigrationファイルなどを吐き出すので、
ファイルを削除する場合はdestroyを使います。
$ ruby script/generate model Hoge
Model作り直し
まぁ普通にscript/generateで作り直します。
Migrationファイル編集
DB定義を全部書き終えて、migration実行。
しかし、エラーが。
migrationファイルではvarcharとかいくつかの型は抽象化されているらしい。
詳細はこちらのサイトの「カラムの型」にありました。
FFTT : RailsのMigration
ここまで来てちょっとわからないことが。
あれ、一意制約ってないの?
:uniqって書きたいのに。。
ちょっと調べてみると、なんとかやる方法が。
uniqueインデックスを定義するといいんですと。
def self.up create_table :days do |t| t.date :date, :null => false t.timestamps end add_index :days, :date, :unique => true end
あとは流しこむだけ
$ rake migration
と、これで完成なわけですが、
DB管理を途中から変更する場合こんなコマンドがありました。
rake db:schema:dump (rake db_schema_dump)
FFTT : RailsのMigration
これ使えばよかった。
まぁdestroyとか知れたので良しとしよう。そうしよう。