Rails 7 マイグレーションコマンド 自分用チートシート
マイグレーションファイルを扱う時に、いつもコマンドを忘れてしまうので、この記事では自分用にまとめたいと思います。 コマンドで指定するマイグレーションクラス名はパスカルケースでもスネークケースでもOKです。 ただし、慣習的にパスカルケースで書くと良いそうです。
# どちらでも出力される内容は変わりません。
rails generate migration CreateTableName
rails generate migration create_table_name
テーブル作成
rails generate migration CreateTableName column1:datatype column2:datatype
# 例1: usersテーブルを作成
rails generate migration CreateUsers
#出力
class CreateUsers < ActiveRecord::Migration[7.1]
def change
create_table :users do |t|
# 手動で記述
t.timestamps
end
end
end
# 例2: カラムを指定してusersテーブルを作成
rails generate migration CreateUsers name:string email:string:index age:integer
# 出力
class CreateUsers < ActiveRecord::Migration[7.1]
def change
create_table :users do |t|
t.string :name
t.string :email
t.integer :age
t.timestamps
end
add_index :users, :email
end
end
既存のテーブルにカラムを追加
rails generate migration AddColumnNameToTableName column_name:data_type
# 例1: usersテーブルにis_adminカラムを追加
rails generate migration AddIsAdminToUsers is_admin:boolean
# 出力
class AddIsAdminToUsers < ActiveRecord::Migration[7.1]
def change
add_column :users, :is_admin, :boolean
end
end
カラム名変更、カラムのデータ型を変更
# 例1: usersテーブルを変更
rails generate migration ChangeColumnInUsers
# 出力
class ChangeColumnInUsers < ActiveRecord::Migration[7.1]
def change
# 手動で記述
end
end
# 記述例
class ChangeColumnInUsers < ActiveRecord::Migration[7.1]
def change
# カラム名変更
rename_column :users, :name, :display_name
# カラムの型変更
change_column :users, :age, :string
end
end
カラム削除
rails generate migration RemoveColumnNameFromTableName column_name:data_type
# 例1: usersテーブルからageカラムを削除
rails generate migration RemoveAgeFromUsers age:string
# 出力
class RemoveAgeFromUsers < ActiveRecord::Migration[7.1]
def change
remove_column :users, :age, :string
end
end