【Rails】rails g model コマンドの使い方を初心者向けに解説

Web開発

はじめに

Ruby on Railsは、Webアプリケーションを効率的に開発するためのフレームワークです。その中でも「モデル」を生成するために使われるrails g modelコマンドは、データベースのテーブルや関連するファイルを自動で生成する強力なツールです。

このコマンドは、Railsの開発プロセスをスムーズにし、アプリケーションの基盤を迅速に作成するために重要です。この記事では、rails g modelコマンドを使ったモデルの作成方法を初心者向けに解説していきます。

この記事を読むとわかること

  • rails g modelコマンドの基本的な使い方
  • モデル生成時にオプションで指定できる内容
  • 実際のコード例を使ってモデルを作成する方法
  • モデルのマイグレーションとデータベースへの反映方法

Rails g model コマンドとは?

rails g modelコマンドは、Railsのモデルファイルを自動で生成するためのコマンドです。このコマンドを実行することで、以下のようなファイルが生成されます。

  • モデルクラスファイル(例: app/models/post.rb
  • マイグレーションファイル(例: db/migrate/20250214123456_create_posts.rb

これにより、データベースのテーブルとモデルが即座に対応し、コードの記述が大幅に楽になります。

rails g model Post title:string body:text

上記のコマンドを実行すると、Postという名前のモデルが生成され、titleという文字列型(string)とbodyというテキスト型(text)のカラムを持つテーブルが作成されます。

モデルを生成するコマンドの基本的な使い方

基本構文

rails g model モデル名 カラム名:型という構文でモデルを作成します。以下のように実行します。

rails g model モデル名 カラム名:型

例えば、ブログアプリケーションを作成する場合に、投稿(Post)というモデルを作成するには、次のようにコマンドを入力します。

rails g model Post title:string body:text

これにより、Postモデルとそのマイグレーションファイルが生成されます。

複数のカラムを追加

モデルに複数のカラムを追加したい場合、カラム名と型をスペースで区切って追加します。

rails g model Article title:string content:text published:boolean

このコマンドでは、Articleというモデルが生成され、title(文字列型)、content(テキスト型)、published(真偽値型)のカラムがデータベーステーブルに追加されます。

追加オプション

rails g modelコマンドには、モデル作成時に追加できるオプションもあります。代表的なものを紹介します。

  • timestamps: 自動的にcreated_atupdated_atカラムを追加する
  • default: デフォルト値を設定する

例えば、created_atupdated_atを追加したい場合、timestampsオプションを使います。

rails g model Product name:string price:decimal timestamps

これにより、Productモデルにcreated_atupdated_atのカラムが追加されます。

モデル作成後のマイグレーション

モデルを生成した後、マイグレーションファイルが自動的に作成されます。このファイルを実行することで、データベースの変更を反映させます。

マイグレーションを実行するには、次のコマンドを使います。

rails db:migrate

これにより、マイグレーションファイルで指定した変更がデータベースに適用され、テーブルが作成されます。

モデルファイルの内容

生成されたモデルファイルには、データベースとのやり取りを行うためのクラスが定義されています。例えば、Postモデルの場合、次のような内容になります。

class Post < ApplicationRecord
  # モデルのロジックをここに記述します
end

このクラス内で、バリデーションやアソシエーション(他のモデルとの関係性)を定義することができます。

モデルのバリデーション

モデルにデータの検証(バリデーション)を追加することで、データが保存される前に正しい内容であることを確認できます。例えば、Postモデルにタイトルが必須であることをバリデーションで設定する場合は、次のように書きます。

class Post < ApplicationRecord
  validates :title, presence: true
end

これにより、Postが保存される前にタイトルが入力されていることが確認されます。

モデル間の関連付け(アソシエーション)

Railsでは、モデル間の関連付け(アソシエーション)を簡単に設定することができます。例えば、PostモデルとCommentモデルが1対多(has_many)の関係にある場合、次のように設定します。

class Post < ApplicationRecord
  has_many :comments
end

これにより、Postインスタンスから関連するCommentインスタンスを簡単に取得できるようになります。

まとめ

rails g modelコマンドは、Railsでの開発を効率的に行うための強力なツールです。モデルとマイグレーションを一度に作成でき、データベースの設計を迅速に進めることができます。実際のプロジェクトで活用することで、効率よくアプリケーションの基盤を構築できるでしょう。

この記事を参考に、さまざまなモデルを生成し、Railsアプリケーションをスムーズに開発していきましょう!

Rubyをマスターしよう

この記事で学んだRubyの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。