ユーザ用ツール

サイト用ツール


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