[Railsの構造]基底クラス・親クラス
大前提
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