あきくもちゃのブック
mindiaあきくもちゃのブック見出し語

rails-migration

秋雲茶 · 2012-06-26 更新

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

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

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

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

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

フィールド追加

>|ruby|

rails g migration AddHogeToModel hoge:string

db/migrate/ の下にフィールド追加用のファイルが作成される。

rake db:migrate

変更反映

||<
※どうやら自動生成は一部しか対応していなとか。

フィールド変更

参考
>|ruby|

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

で変更反映
||<

フィールド名変更

>|ruby|
def up
rename_column :model, :hoge, :fuga
end
||<

テーブル名変更

>|ruby|
def up
rename_table :old_model, :new_model
end
||<

フィールド名削除

>|ruby|
def up
remove_column :model, :field1, :field2
end
||<

インデックス追加・削除

>|ruby|
def up
add_index :model, :index_name, :options
end
def down
remove_index :model, :index_name
end

通常index_name = column_name

||<

関連する見出し語