はじめに
rails g model
とrails g migration
の違いについて、なんとなくの理解しかできていなかったので備忘録としてまとめます。
rails g modelとは
このコマンドは、新しいモデル(データベーステーブルの設計図)を作成します。モデルはデータベースのテーブルに対応し、アプリケーション内でのデータの取り扱いやロジックの管理に使用されます。
コマンドの記述方法は以下のようになります。
$ rails g model モデル名 カラム名:データ型
実行方法
例えば、以下のコマンドを実行すると、Userモデルに対応するデータベーステーブルを作成するマイグレーションファイルが生成されます。
$ rails g model User name:string email:string
続いて、このマイグレーションを実行して変更をデータベースに適用します。
$ rails db:migrate
rails g migrationとは
このコマンドは、手動でマイグレーションファイルを生成します。主にデータベーススキーマの変更、つまり既存のテーブルに新しいカラムを追加したり、カラムを削除したりするために使用されます。
コマンドの記述方法は以下のようになります。
$ rails g migration モデル名 カラム名:データ型
実行方法
1. 新しいマイグレーションファイルを生成
例えば、users
テーブルにage
カラムを追加したい場合は以下のコマンドを実行すると、add_age_to_users
という名前のマイグレーションファイルが生成されます。
$ rails g migration add_age_to_users age:integer
これで、db/migrate
ディレクトリに新しいマイグレーションファイルが作成されます。
このマイグレーションファイルを編集して、users
テーブルにage
という名前の新しいカラムを追加できます。
# db/migrate/xxxxxx_add_age_to_users.rb
class AddAgeToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :age, :integer
end
end
続いて、このマイグレーションを実行して変更をデータベースに適用します。
$ rails db:migrate
まとめ
rails g model
は新しいモデルを作成するために使い、rails g migration
は手動でマイグレーションファイルを生成し、データベースのカラムの追加や削除を行うために使用されます。