rails:migration
マイグレーション
DBのテーブル管理を行う。
以下version 2.1前提
コマンド
基本はrakeを使う
// マイグレーション実行 $ rake db:migrate // 指定のバージョンのupを実行 $ rake db:migrate:up VERSION=XXXXXX // 指定のバージョンのdownを実行 $ rake db:migrate:down VERSION=XXXXXX // 一つバージョンを戻す $ db:rollback // 指定のバージョン分戻す $ db:rollback STEP=3 // 現在のバージョンを再適用 $ db:migrate:redo
色々やってると最初のバージョンからマイグレーションを実行できなくなっている事もある。そんな時はmigrateではなくschemaを使うといい。
// スキーマ(db/schema.rb)をロード $ db:schema:load // 現在のDBからスキーマを作成 $ db:schema:dump
migrationのコマンド
class Hoge < ActiveRecord::Migration def self.up # テーブル作成 create_table :table_names do |t| t.string :col_name1 t.integer :col_name2 t.timestamp end # テーブル削除 drop_table :table_names # カラム追加 add_column :table_names, :col_name, :string, :null => false, :default => "hoge" # カラム削除 remove_column :table_names, :col_name # カラム名変更 rename_column :table_name, :current_col_name, :new_col_name # カラム変更 change_column :table_names, :col_name, :string, :null => false, :default => "hoge" # インデックス追加 add_index :table_names, :col_name # ユニークインデックス追加 add_index :table_names, :col_name, :unique => true # 複合インデックス追加 add_index :table_names, [:col_name1, col_name2], :unique => true # インデックスを削除 remove_index :table_names, col_name # 好きなSQLを実行 execute "sql ... " end def self.down end end
add_column、change_columnオプション
:limit => 255 # 文字列長、桁数 :default => "hoge" # デフォルト値, :null => false # NOT NULL, :precision => 10 # decimalの精度, :scale => 8 # decimalのスケール
カラムの型指定 :string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean
timestamp指定はcreated_atとupdated_atというdatetimeカラムを作成し、それぞれ作成時刻、更新時刻をActiveRecordがセットする。
rails/migration.txt · 最終更新: 2008/11/25 08:03 by 127.0.0.1