rails-migration
DB構成をSQLを書かずに宣言できる仕組み。
初期値とか制約とか、索引とかも勿論作成できる。
コマンドは、rake db:migrate ってやると db/migrate 下にあるマイグレーションファイルを実行してDBに変更を加える。
勿論DBの設定(db/schema.rb)は設定しておく事が前提。
で、試してた中で分かったのが、一回 db:migrate をすると、その時のタイムスタンプを保持してて、次に db:migrate ってしても、以前から変更がなければ何も実行されないということ。
以前は、db/migrate 下のファイルを毎度実行するものだと思っていたので勘違いしていた。
フィールド追加
>|ruby|
db/migrate/ の下にフィールド追加用のファイルが作成される。
rake db:migrate
変更反映
||<
※どうやら自動生成は一部しか対応していなとか。
フィールド変更
参考
>|ruby|
でファイルを作って、
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
||<