読者です 読者をやめる 読者になる 読者になる

悪あがきプログラマー

悪あがきを続けていきたい技術と書評なブログです。トレタでiOSエンジニアやってます。

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

UNIQUE制約をつける - Rubyとか Illustratorとか SFとか折紙とか

あとは流しこむだけ

$ rake migration


と、これで完成なわけですが、
DB管理を途中から変更する場合こんなコマンドがありました。

rake db:schema:dump (rake db_schema_dump)

FFTT : RailsのMigration
これ使えばよかった。
まぁdestroyとか知れたので良しとしよう。そうしよう。



RailsによるアジャイルWebアプリケーション開発
Sam Ruby David Heinemeier Hansson Dave Thomas
オーム社
売り上げランキング: 4500
おすすめ度の平均: 4.5
3 初心者には厳しい・・・
5 RoR学習者は早く買うべきです。
5 ググるより原書
5 Rails入門書
5 もちろん満点です!!