マイグレーション(migration)

マイグレーションとは

マイグレーションとは

直接SQLを使わずに、データベースのテーブルやカラムなどの構造を変更できる仕組み

特徴

  • db/migrateディレクトリ以下にあるRubyで書かれたファイル
  • ファイル名はタイムスタンプ(西暦、月、日、時、分、秒)とアンダースコア(_)で始まり、クラス名のすべての大文字を小文字にしたもの
  • 別々のマイグレーションファイルに同じ名前のマイグレーションクラスを記述できない
  • idという主キーを自動的に追加
  • 実行するにはRakeタスク
  • schema_infoテーブルに現在のバージョンが格納

簡単な例

class AddSsl < ActiveRecord::Migration
  def up
    add_column :accounts, :ssl_enabled, :boolean, default: true
  end

  def down
    remove_column :accounts, :ssl_enabled
  end
end
class TenderloveMigration < ActiveRecord::Migration
  def change
    create_table(:horses) do |t|
      t.column :content, :text
      t.column :remind_at, :datetime
    end
  end
end

利用可能なメソッド

  • create_table
  • drop_table
  • change_table
  • rename_table
  • add_column
  • rename_column
  • change_column
  • remove_column
  • add_index
  • remove_index
  • remove_index

サポートしているデータベース

  • MySQL
  • PostgreSQL
  • SQLite
  • SQL Server
  • Sybase
  • Oracle

テーブルの作成(create_table)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

テーブルを作成

使い方

create_table(テーブル名 [, オプション])
create_table テーブル名  [, オプション] do |t|
  t.型 カラム名  [, カラムオプション]
end

オプション

オプション説明デフォルト
:id主キーを自動生成true
:primary_key主キーのカラムの名前id
:optionsテーブルオプション
:temporary一時テーブルとして作成false
:forceテーブルを作成前に、既存のテーブルを削除false
:as

カラムオプション

オプション説明デフォルト
:limitカラムの桁数
:defaultデフォルトの値
:nullnullを許可するかtrue
:precision数値の桁数
:scale小数点以下の桁数

カラムの型

データ方説明
string文字列
text長い文字列
integer整数
float浮動小数
decimal精度の高い小数
datetime日時
timestampより細かい日時
time時間
date日付
binaryバイナリデータ
booleanBoolean型

テーブルの作成
crate_table :products do |t|
  t.string :name
end
空のカラムを禁止
create_tabe :products |t|
  t.string :name, :null => false
end
文字コードを指定してテーブルを作成
create_table :suppliers, :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8'
主キーを指定してテーブルを作成
create_table(:objects, :primary_key => 'guid') do |t|
  t.column :name, :string, :limit => 80
end
プライマリーキーの無いテーブルを作成
create_table(:categories_suppliers, :id => false) do |t|
  t.column :category_id, :integer
  t.column :supplier_id, :integer
end

ソースコード

ソースコード検索

テーブル名を変更(rename_table)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルの名前を変更する

使い方

rename_table(現在のテーブル名, 新しいテーブル名)

now_tableからnew_tableに変更
rename_table :now_table, :new_table

ソースコード

ソースコード検索

テーブルの削除(drop_table)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルを削除

使い方

drop_table(:テーブル名 [, オプション])

オプション

オプション説明デフォルト
:id主キーを自動生成true
:primary_key主キーのカラムの名前id
:optionsテーブルオプション
:temporary一時テーブルとして作成false
:forceテーブルを作成前に、既存のテーブルを削除false

productsテーブルを削除
drop_table :products

ソースコード

ソースコード検索

カラムの追加(add_column)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルにカラムを追加

使い方

add_column(テーブル名 カラム名, タイプ [, オプション])
change_table テーブル名 do |t|
  t.タイプ カラム名 [, オプション]
end

オプション

オプション説明デフォルト
:limitカラムの桁数を指定
:defaultデフォルト値を指定
:nullnill値を許可するかtrue
:precision:decimal 型の精度を指定
:scale:decimal 型の小数点以下の桁数

precisionとscaleについては、データベースによって差があるので注意が必要

postsテーブルにtitleカラムを作成
def self.up
  add_column :posts, :title, :string
end
カラムの桁数が10桁
def self.up
  add_column :posts, :title, :string, :limit => 10
end
null値を許可しない
def self.up
  add_column :posts, :title, :string, :null => false
end

ソースコード

ソースコード検索

カラム名の変更(rename_column)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルのカラム名を変更
名前を変更しても、そのカラムに関連付けられている既存のデータは破棄されない

使い方

rename_column(テーブル名, 変更するカラム名, 新しいカラム名)
change_table テーブル名 do |t|
  t.rename 変更するカラム名, 新しいカラム名
end

usersテーブルのe_mailカラムをmailに変更
class RenameEmailColumn < ActiveRecord::Migration
  def self.up
    rename_column :users, :e_mail, :mail
  end
  def self.down
    rename_column :users, :mail, :e_mail
  end
end

ソースコード

ソースコード検索

カラムの変更(change_column)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

既存のカラムの定義を変更

使い方

カラムの変更
change_column(テーブル名,  カラム名, データ型 [, オプション])
カラムのデフォルト値の変更
change_column_default(テーブル名,  カラム名, デフォルト値)

オプション

オプション説明
:limitカラムの桁数を指定
:defaultデフォルト値を指定
:nullnill値を許可するか
:precision:decimal 型の精度を指定
:scale:decimal 型の小数点以下の桁数

usersテーブルのnameカラムをtext型に変更
change_column(:users, :name, :text)
文字数の最大を80に変更
change_column(:users, :name, :string, :limit => 80)
null側を許可しないように変更
change_column(:users, :name, :string, :null => dalse)

ソースコード

ソースコード検索

カラムの削除(remove_column)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルのカラムを削除

使い方

remove_column(テーブル名, カラム名 [, 型, オプション])

オプション

オプション説明デフォルト
:limitカラムの桁数を指定
:defaultデフォルト値を指定
:nullnill値を許可するかtrue
:precision:decimal 型の精度を指定
:scale:decimal 型の小数点以下の桁数

usersテーブルのdescriptionカラムを削除
remove_column(:users, :description)

ソースコード

ソースコード検索

インデックスの追加(add_index)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルにインデックスを追加

使い方

add_index(テーブル名, インデックスを付与するカラム名 [, オプション])
change_tabe テーブル名 do |t|
  t.index ンデックスを付与するフィールド名 [, オプション]
end

オプション

オプション説明
:nameインデックスの名前
:uniquetrueを指定するとユニークなインデックス
:lengthインデックスに含まれるカラムの長さ

usersテーブルのnameカラムのインデックスを生成
add_index :users, :name
ユニークなインデックスを生成
add_index :users, [:name, :employee_id], :unique => true
インデックス名をつけて生成
add_index :users, [:name, :employee_id], :unique => true, :name => 'by_branch_name'
インデックスの長さを10に指定して生成
add_index :users, :name, :name => 'by_name', :length => 10

ソースコード

ソースコード検索

インデックスの削除(remove_index)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルのインデックスを削除

使い方

remove_index(テーブル名 [, オプション])
change_table テーブル名 do |t|
  t.remove_index インデックス名
end

オプション

オプション説明
:name => インデックス名インデックス名
:column => インデックスを構成するカラム名カラム名

usersテーブルのnameカラムのインディックスを削除
remove_index :users, :name

ソースコード

ソースコード検索

created_atとupdated_atを生成(timestamps)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

created_atとupdated_atを両方追加するメソッド

使い方

timestamps

usersテーブルにtimestampsを設定
create_table :users do |t|
  t.timestamps
end

ソースコード

ソースコード検索

リファレンスの生成(references)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

他のテーブルへの外部キーを表すカラムを生成

使い方

references

belongs_to :user_idと同じ
create_table :blogs do |t|
  t.references("user")
end

ソースコード

ソースコード検索

データベースのカラムをバージョンアップ(up)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

データベースのカラムをバージョンアップする。
Rails3.0以下のバージョンのself.upに相当するのは、changeメソッド。
Rails3.1以上で、upメソッドはロールバックできない処理をする際に主に使用する。

使い方

def up
end

pagesテーブルにnameカラムをstring型で作成
def up
  create_table :pages do |t|
    t.string :name
    t.string :category
  end
end

データベースのカラムをバージョンダウン(down)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

データベースのカラムをバージョンダウンする。
Rails3.0以下では、self.upとself.downをセットに記述していたが、Rails3.1ではchangeメソッドのみで両方の処理を実行する。
Rails3.1以上では、downメソッドはロールバックできない処理の際に主に使用する。

使い方

def down
end

基本的な使い方
def down
  drop_table :pages
end

データベースのカラムを変更(change)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

データベースのカラムを変更する

使い方

change(カラム名, 型 [, オプション])

t.change(:name, :string, limit: 80)
t.change(:description, :text)

ソースコード

ソースコード検索

マイグレーションファイルでSQLを実行(execute)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

マイグレーションファイルでSQLを実行する

使い方

execute SQL文

pagesテーブルの最新の10件を取得
execute "SELECT * FROM pages ORDER BY updated_at DESC LIMIT 10"

カラムが存在するかチェック(column_exists?)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルにカラムが存在するかチェックする

使い方

column_exists?(テーブル名, カラム名 [, 型, オプション])

オプション

オプション説明デフォルト
:id主キーを自動生成true
:primary_key主キーのカラムの名前id
:optionsテーブルオプション
:temporary一時テーブルとして作成false
:forceテーブルを作成前に、既存のテーブルを削除false

pagesテーブルのtitleカラムにインデックスが存在するか
column_exists? :pages, :title

ソースコード

ソースコード検索

インデックスが存在するかチェック(index_exists?)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルにインデックスが存在するかチェックする

使い方

index_exists?(テーブル名, カラム名 [, オプション])

オプション

オプション説明
:nameインデックスの名前
:uniquetrueを指定するとユニークなインデックス
:lengthインデックスに含まれるカラムの長さ

pagesテーブルのtitleカラムにインデックスが存在するか
index_exists? :pages, :title

ソースコード

ソースコード検索

テーブル定義を変更(change_table)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

テーブル定義を変更する

使い方

change_table(テーブル名 [, オプション]) do |t|
  t.メソッド名(データ型) カラム名
end

オプション

オプション説明デフォルト
:bulk変更内容を1つのALTER TABLEにまとめるかfalse

使用できるメソッド

メソッド名説明
indexインデックス
changeカラムを変更
change_defaultカラムのデフォルト値を変更
renameカラムの名前を変更
removeカラムを削除
remove_referencesリファレンスの削除
remove_indexインデックスの削除
remove_timestampsタイムスタンプの削除

データ型

メソッド名説明
string文字列
text長い文字列
integer整数
float浮動小数
decimal精度の高い小数
datetime日時
timestampより細かい日時
time時間
date日付
binaryバイナリデータ
booleanBoolean型

pagesテーブルにtext型のmemoを追加、titleにインデックスを設定
change_table :pages do |t|
  t.text :memo
  t.index :title
end
カラムの追加
change_table(:suppliers) do |t|
  t.column :name, :string, limit: 60
end
2つのカラムの追加
change_table(:suppliers) do |t|
  t.integer :width, :height, null: false, default: 0
end

ソースコード

ソースコード検索

リファレンスの追加(add_reference)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

既存のテーブルにリファレンスを追加する

使い方

add_reference(テーブル名, リファレンス名 [, オプション])

オプション

オプション説明
:polymorphicポリモーフィックを付与
:indexインデックスを付与

オプションなし
add_reference(:products, :user)
オプションあり
add_reference(:products, :supplier, polymorphic: true, index: true)

ソースコード

ソースコード検索

created_atとupdated_atを追加(add_timestamps)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

既存のテーブルにcreated_atとupdated_atを追加する

使い方

add_timestamps(テーブル名)

usersテーブルにcreated_atとupdated_atを追加
add_timestamps(:users)

ソースコード

ソースコード検索

カラムの初期値を設定(change_column_default)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

カラムの初期値を設定する

使い方

change_column_default(テーブル名, カラム名, 初期値)

change_column_default(:suppliers, :qualification, 'new')
change_column_default(:accounts, :authorized, 1)
change_column_default(:users, :email, nil)

ソースコード

ソースコード検索

テーブルを結合して作成(create_join_table)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

2つのテーブルを結合して新しいテーブルを作成する

使い方

create_join_table(テーブル1, テーブル2 [, オプション]) do |td|
end
オプション説明
:table_nameテーブルの名前
:column_optionsカラムのオプション
:optionsオプション
:temporary一時テーブルとして作成
:forceテーブルを作成前に、既存のテーブルを削除

create_join_table(:assemblies, :parts, options: 'ENGINE=InnoDB DEFAULT CHARSET=utf8')
# CREATE TABLE assemblies_parts (
#   assembly_id int NOT NULL,
#   part_id int NOT NULL,
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8

ソースコード

ソースコード検索

join_tableを削除(drop_join_table)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

join_tableを削除する

使い方

drop_join_table(テーブル1, テーブル2 [, オプション])

オプション

オプション説明
:table_nameテーブルの名前
:column_optionsカラムのオプション
:optionsオプション
:temporary一時テーブルとして作成
:forceテーブルを作成前に、既存のテーブルを削除

drop_join_table(:assemblies, :parts, options: 'ENGINE=InnoDB DEFAULT CHARSET=utf8')

ソースコード

ソースコード検索

複数のカラムを削除(remove_columns)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルの複数のカラムを削除

使い方

remove_columns(テーブル名, カラム名 [, ...])

オプション

オプション説明デフォルト
:limitカラムの桁数を指定
:defaultデフォルト値を指定
:nullnill値を許可するかtrue
:precision:decimal 型の精度を指定
:scale:decimal 型の小数点以下の桁数

remove_columns(:suppliers, :qualification, :experience)

ソースコード

ソースコード検索

リファレンスの削除(remove_reference)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

既存のテーブルのリファレンスを削除する

使い方

remove_reference(テーブル名, リファレンス名 [, オプション])

オプション

オプション説明
:polymorphicポリモーフィックを付与
:indexインデックスを付与

オプションなし
remove_reference(:products, :user, index: true)
オプションあり
remove_reference(:products, :supplier, polymorphic: true)

ソースコード

ソースコード検索

created_atとupdated_atの削除(remove_timestamps)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

既存のテーブルのcreated_atとupdated_atを削除する

使い方

remove_timestamps(テーブル名)

usersテーブルのcreated_atとupdated_atを削除
remove_timestamps(:users)

インデックスの変更(rename_index)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

指定したテーブルのインデックスを変更する

使い方

rename_index(テーブル名, 変更前の名前, 変更後の名前)

rename_index :people, 'index_people_on_last_name', 'index_users_on_last_name'

ソースコード

ソースコード検索

テーブルが存在するかチェック(table_exists?)

適応バージョン

  • 1.0.0
  • 1.1.0
  • 1.1.1
  • 1.1.6
  • 1.2.0
  • 1.2.6
  • 2.0.0
  • 2.0.1
  • 2.0.3
  • 2.1.0
  • 2.2.1
  • 2.3.2
  • 2.3.8
  • 3.0.0
  • 3.0.5
  • 3.0.7
  • 3.0.9
  • 3.1.0
  • 3.2.3
  • 3.2.8
  • 3.2.13
  • 4.0.0
  • 4.1.0
  • 4.2.1

説明

テーブルが存在するかチェックする

使い方

table_exists?(テーブル名)

table_exists?(:developers)

ソースコード

ソースコード検索