Migrationメモ

よく使うタスク

rake db:migrate
rake db:migrate VERSION=1
rake db:schema:dump
rake db:session:create

 --trace

マイグレーション基本の形(ファイル名:00x_create_locations.rb)

class CreateLocations < ActiveRecord::Migration
  def self.up
    create_table(:locations) do |t|
      t.column :user_id, :integer
      t.column :lat, :decimal, :precision => 18, :scale => 14
      t.column :lng, :decimal, :precision => 18, :scale => 14
      t.column :created_at, :datetime
    end
    execute 'INSERT INTO locations (user_id) VALUES (1)'
  end

  def self.down
    drop_table :locations
  end
end

わかんなくなったら何を見ればいい?

http://api.rubyonrails.com/
SELECT、INSERT、DELETEなどのデータベース操作
ActiveRecord::ConnectionAdapters::DatabaseStatements
カラム追加・削除・変更などのカラム操作とか
ActiveRecord::ConnectionAdapters::SchemaStatements
t.columnに渡すパラメータとか
ActiveRecord::ConnectionAdapters::TableDefinitionを参照

よく忘れる

DECIMALカラム rails 1.2以上
 t.column :lat, :decimal, :precision => 18, :scale => 14
 t.column :lng, :decimal, :precision => 18, :scale => 14

:precision => 全体の桁数
:scale => 小数点以下

add_index

add_index(table_name, column_name, options = {})
カラム名は配列にすると複合インデックスっぽい。

add_index(:accounts, [:branch_id, :party_id], :unique => true)

CREATE UNIQUE INDEX accounts_branch_id_party_id_index ON accounts(branch_id,
party_id)