👩‍🍼

[Railsの構造]基底クラス・親クラス

2025/01/23に公開

大前提

RailsはRubyをベースにしていて、全てがオブジェクト指向で構成されている!
私たちがRailsで作成するクラス(例えばモデルやコントローラ)は、全て「親クラス」や「モジュール」から継承されている。
気づいてなかっただけで、元となったものがある。
親クラスのおかげで簡単に作業できている。おかいき(お陰様で生きております)


コントローラ(Controller)

以前ここでまとめてたけど、復習のためもう一回まとめる。

ApplicationController

すべてのコントローラの親クラスであり、Railsの ActionController::Base を継承している。

ActionController::Base

Railsのコントローラ機能を提供するクラスで、以下の機能を持っている

  • リクエストを受け取る
  • 適切なモデルを呼び出してデータを取得
  • レスポンスを生成し、ビューをレンダリング

「ベース」って言葉がそのまんまの意味で、コントローラができる基本動作を持っている。
「コントローラは、リクエストを受けて、ビューに表示させるんですよ~」と親のように教える。
アクションコントローラにママみを感じろ!!!


アクションコントローラをおばあちゃんにして、間にアプリケーションコントローラ入れればよかったかも。

ApplicationController

コントローラ全体の共通機能を定義するクラス。
ログイン・ログアウトした時の処理(どこにリダイレクトするかなど)は共通の処理のため、ここに書く。


モデル (Model)

モデルは、ActiveRecord を継承している。

ActiveRecord

データベースとやりとりするための主要クラスで、以下の機能を持つ。

  • データベースのCRUD操作(Create, Read, Update, Delete)
  • SQL文の生成と実行
  • バリデーションやコールバックのサポート

ApplicationRecord

モデル全体で共通する設定や機能を記述できる親クラス。


ビュー (View)

ビューは、 ActionView を継承している。

ActionView::Base

ビューのレンダリングやヘルパーメソッド(例:link_to, form_with)を提供するクラス。


ルーティング (Routing)

ルーティングは、 ActionDispatch::Routing を継承する。


その他

Active Support
Rails全体で利用される便利な拡張機能(時間計算や文字列操作など)を提供する。
主にモジュールとして使われ、他のクラスに組み込まれる。

Active Job
非同期処理(バックグラウンドジョブ)を管理するための基盤。

Active Storage
ファイルのアップロードや外部ストレージの連携機能を提供。


大元となるクラス

最終的には、全てのクラスは Object クラスをルートとしている。
Rubyの継承構造の中で、すべてのクラスは以下のような形で大元にたどり着く。

Discussion