開発環境
・Ruby: 2.5.7
・Rails: 5.2.4
・Vagrant: 2.2.7
・VirtualBox: 6.1
・OS: macOS Catalina
マイグレーションコマンドの書き方
$ rails g migration ChangeColumnToBooks
は、
$ rails generation migration change_column_to_books
と書くのと同じ。
つまり、generation
はg
と略す事ができ、
AddBodyToBooks
の様に、単語の先頭を大文字にする事で「 _ 」を書く手間が省ける。
基本コマンド
1.モデルとテーブルを作成
$ rails g model モデル名 カラム名:型名
$ rails g model Book title:string
class CreateBooks < ActiveRecord::Migration[5.2]
def change
create_table :books do |t|
t.string :title
t.timestamps
end
end
end
2.モデルとテーブルを削除
rails d model モデル名
$ rails d model Book
3.マイグレーションを実行
$ rails db:migrate
4.マイグレーションの内容を戻す
①1ステップ前に戻る場合
$ rails db:rollback
①複数ステップ前に戻る場合
$ rails db:rollback STEP=5 # 数字は自由に変更可能
4.マイグレーションのステータス確認
rails db:migrate:status
テーブル関係
1.テーブルのみを削除
$ rails g migration Dropテーブル名
$ rails g migration DropBooks
class DropBooks < ActiveRecord::Migration[5.2]
def change
drop_table :books # 追記
end
end
2.テーブル名を変更
$ rails g migration Rename変更前のテーブル名To変更後のテーブル名
$ rails g migration RenameBooksToArticles
class RenameBooksToArticles < ActiveRecord::Migration[5.2]
def change
rename_table :books, :articles # 追記
end
end
カラム関係
1.カラムを追加
①単体
$ rails g migration Addカラム名Toテーブル名 カラム名:型名
$ rails g migration AddBodyToBooks body:text
class AddBodyToBooks < ActiveRecord::Migration[5.2]
def change
add_column :books, :body, :text
end
end
②複数
$ rails g migration AddColumnsToテーブル名 カラム名:型名 カラム名:型名 カラム名:型名
$ rails g migration AddColumnsToBooks body:text introduction:text price:integer
class AddColumnsToBooks < ActiveRecord::Migration[5.2]
def change
add_column :books, :body, :text
add_column :books, :introduction, :text
add_column :books, :price, :integer
end
end
2.カラムを削除
①単体
$ rails g migration Removeカラム名Fromテーブル名 カラム名:型名
$ rails g migration RemoveTitleFromBooks title:string
class RemoveTitleFromBooks < ActiveRecord::Migration[5.2]
def change
remove_column :books, :title, :string
end
end
②複数
$ rails g migration RemoveColumnsFromテーブル名 カラム名:型名 カラム名:型名 カラム名:型名
$ rails g migration RemoveColumnsFromBooks body:text introduction:text price:integer
class RemoveColumnsFromBooks < ActiveRecord::Migration[5.2]
def change
remove_column :books, :body, :text
remove_column :books, :introduction, :text
remove_column :books, :price, :integer
end
end
3.カラムのデータ型を変更
$ rails g migration ChangeDataカラム名Toテーブル名 カラム名:型名
$ rails g migration ChangeDataTitleToBooks
class ChangeDataTitleToBooks < ActiveRecord::Migration[5.2]
def change
change_column :books, :title, :text # 追記
end
end
4.カラムのオプションを追加
$ rails g migration ChangeOptionカラム名Toテーブル名 カラム名:型名
$ rails g migration ChangeOptionTitleToBooks
class ChangeOptionTitleToBook < ActiveRecord::Migration[5.2]
def change
change_column :books, :title, :string, null: false # 追記
end
end
5.データ型一覧
型名 | 役割 |
---|---|
string | 短い文字列 |
text | 長い文字列 |
integer | 整数 |
float | 浮動少数 |
decimal | 精度の高い少数 |
datetime | 日時 |
timestamp | タイムスタンプ |
time | 時間 |
date | 日付 |
binary | バイナリ文字列 |
boolean | 真偽値 |
6.よく使うオプション
オプション名 | 役割 |
---|---|
default | 初期値を設定 |
null | 空欄の真偽 |
limit | 長さを制限 |
unique | 一意制約を付与 |
unique | インデックスを付与 |