Modelとは|Rails APIにおけるModelの役割と書き方をわかりやすく解説

「Modelとは|Rails APIにおけるModelの役割と書き方をわかりやすく解説」のメインビジュアル

この記事では、Rails API における Model とは何か

そして Model がどのような役割を担い、どこまで処理を書いてよいのか を、基本から順を追って解説します。

Rails API を学習していると、

  • Model が「DBとつながっているクラス」までの理解で止まっている
  • なんとなく Model に処理を書いてしまっている

といった悩みに直面しがちです。

これらを解消するために、この記事を通して、

Rails API における Model の役割を整理しながら学んでいきましょう。

1. Modelとは何か?

Model とは、

アプリケーションが扱うデータと、そのデータに関するルールを表すクラスです。

Rails API では、

Model の中で DB に対する処理を行い、

処理結果を Controller に返します

以降の章で、この Model がどのような役割を担い、 どこまで処理を書いてよいのかを、具体例とともに見ていきます。

2. Rails APIにおけるModelの位置づけ

Rails API における、 リクエスト処理の基本的な流れ は次のとおりです。

HTTPリクエスト
 ↓
ルーティング
 ↓
コントローラ(Controller)
 ↓
モデル(Model)
 ↓
コントローラ(Controller)
 ↓
レスポンス(JSON)

クライアントからリクエストが送られてくると、

  1. routes.rb に定義されたルーティングをもとに
  2. 処理を担当する Controller とアクションが決まり
  3. Controller が呼び出され、必要に応じて Model の処理を呼び出す
  4. Model が DB へのアクセスなどを行い、その結果を Controller に返す
  5. 処理結果をもとに、JSON などのレスポンスが返される

という流れで処理が進みます。

このとき、Model は

Controller によって呼び出され、 データの取得・保存やデータに関する処理を行い、 その結果を Controller に返す役割 を担います。

3. Modelの基本的な書き方

ここでは、Model の中に データベースからデータを取得する処理を書く例を見てみましょう。

class User < ApplicationRecord
  def self.find_user(user_id)
    User.find(user_id)
  end
end

このコードでは、

  • User → users テーブルに対応する Model クラス。
  • find_user → ユーザーを取得するためのメソッド。
  • User.find(user_id) → 引数として渡された user_id をもとに、DB からユーザーを取得して返す。

という役割を持っています。

※ これらのデータ取得(や保存)の仕組みは ActiveRecord によって実現されていますが、詳しい説明は別の記事で扱います。

4. Rails APIでよく使うModelの処理例

次に、Rails API でよく書かれる Model の処理を見てみます。

4-1. バリデーション

Model では、データが正しいかどうかをチェックする

バリデーション を定義できます。

class User < ApplicationRecord
  validates :email, presence: true, uniqueness: true
end

これは、

  • email が必須であること(presence: true
  • email が他のユーザーと重複しないこと(uniqueness: true

といった データのルール を Model に定義しています。

4-2. ドメインロジック

Model では、業務ルール・判断ロジックを表現する

ドメインロジック を定義できます。

class User < ApplicationRecord
  def adult?
    age >= 18
  end
end

このコードでは、

  • User → users テーブルに対応する Model クラス。
  • adult? → ユーザーが成人(18歳以上)かどうかを判定するためのメソッド。
  • age >= 18 → 年齢(age)が 18 以上であれば true、未満であれば false を返す。

という役割を持っています。

このように、

  • データ取得(や保存)
  • バリデーション
  • ドメインロジック

といった処理は、Model の重要な役割です。

5. Modelに書いてよいこと・書かない方がよいこと

ここまでを踏まえて、Model に書いてよいこと・書かない方がよいことを整理します。

5-1. Modelに書いてよいこと

  • データのバリデーション
  • データの取得・保存に関する処理
  • ドメインロジック(業務ルール・判断ロジック)

5-2. Modelに書かない方がよいこと

  • HTTP やリクエストに依存した処理
  • レスポンス形式(JSON など)を意識した処理

例えば、

  • params を参照する
  • render を呼び出す

といった処理は、Model の責務ではありません。

Model はあくまで、

データと、そのデータに関するルールを表現することに集中させる

のが重要です。

おわりに

この記事では、Rails API における Model について、

  • Model とは何か
  • Controller との関係性
  • Model にどのような処理を書くのか

を、具体例とともに解説しました。

Model は単に「DB とつながっているクラス」ではなく、

  • データの取得(や保存)
  • データのバリデーション
  • ドメインロジック(業務ルール・判断ロジック)

といった、データとそのルールを表現する中心的な存在です。

この役割を意識することで、

  • Controller に処理を書きすぎてしまう
  • Model に何を書けばよいか分からない

といった悩みも、自然と整理できるようになります。

本記事が、Rails API における Model を

「なんとなく書くもの」から「役割を理解して設計できるもの」へ

変えるきっかけになれば幸いです。

Ruby・Railsの理解を深めたい方は理解はこちら

「Rubyとは|Railsを理解するために最低限知っておきたい基本文法」のメインビジュアルRubyとは|Railsを理解するために最低限知っておきたい基本文法 「Railsとは|MVCの基本とRails APIの全体像をわかりやすく解説」のメインビジュアルRailsとは|MVCの基本とRails APIの全体像をわかりやすく解説 「Railsのルーティングとは|routes.rbとresourcesの基本をRails APIでわかりやすく解説」のメインビジュアルRailsのルーティングとは|routes.rbとresourcesの基本をRails APIでわかりやすく解説 「Controllerとは|Rails APIにおけるControllerの役割と書き方をわかりやすく解説」のメインビジュアルControllerとは|Rails APIにおけるControllerの役割と書き方をわかりやすく解説

Ruby・Rails APIを使用してアプリケーションを作成したい方はこちら

【手順解説】ReactとRails APIで投稿サービスを作る(認証なし)

Ruby・Rails APIの環境構築をしたい方はこちら

【初心者向け】DockerでRails APIとPostgreSQLの環境構築をする(M1 Mac) 【初心者向け】DockerでRails APIとMySQLの環境構築をする(M1 Mac)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA