マイグレーションファイルを扱う時に、いつもコマンドを忘れてしまうので、この記事では自分用にまとめたいと思います。 コマンドで指定するマイグレーションクラス名はパスカルケースでもスネークケースでも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