rails-migration
0pt
リファレンス日
リファレンス英
参考
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」について友人に書いてもらう。
コメントはまだありません