S 8e806432b0970ab7146e36f2ba2d7aac rails-migration

リファレンス日
リファレンス英
参考

DB構成をSQLを書かずに宣言できる仕組み。
初期値とか制約とか、索引とかも勿論作成できる。

コマンドは、rake db:migrate ってやると db/migrate 下にあるマイグレーションファイルを実行してDBに変更を加える。
勿論DBの設定(db/schema.rb)は設定しておく事が前提。

で、試してた中で分かったのが、一回 db:migrate をすると、その時のタイムスタンプを保持してて、次に db:migrate ってしても、以前から変更がなければ何も実行されないということ。

以前は、db/migrate 下のファイルを毎度実行するものだと思っていたので勘違いしていた。

フィールド追加

> rails g migration AddHogeToModel hoge:string
* db/migrate/ の下にフィールド追加用のファイルが作成される。
> rake db:migrate
* 変更反映
※どうやら自動生成は一部しか対応していなとか。

フィールド変更

参考
> rails g migration ChangeHogeToModel
でファイルを作って、

>vi [yyyymmddhhmiss]_change_hoge_to_model.rb
-------------------------
class ChangeHogeToModel < ActiveRecord::Migration
  def up
    change_column :model, :hoge, :string, :limit=>512
  end

  def down
    # ロールバック出来ない指定
    raise ActiveRecord::IrreversibleMigration
  end
end
-------------------------
:wq

> rake db:migrate
で変更反映

フィールド名変更

def up
  rename_column :model, :hoge, :fuga
end

テーブル名変更

def up
  rename_table :old_model, :new_model
end

フィールド名削除

def up
  remove_column :model, :field1, :field2
end

インデックス追加・削除

def up
  add_index :model, :index_name, :options
end
def down
  remove_index :model, :index_name
end
* 通常index_name = column_name

もしかして

    他の人の「rails-migration」

    S 8e806432b0970ab7146e36f2ba2d7aac

    秋雲です。とうとうつぶやきを公開するまでに至りました。リアルでもよくつぶやくのでぴったりですね。 マインディアっていう会社でITエンジニアしてます。RailsとかCakeとか、フレームワークを使ってのお仕事がメイン。サーバサイドも担当することも。プログラミングの他はアニメとかよく?見ます。

    最新

      最新エントリ

        関連ツイート