アラフォーからのプログラミングとデザイン

大人から始めたプログラミングとデザインについてのあれこれ

クラスの継承構造について整理する

継承の階層

Toy_appではコントローラとモデルのクラス階層について触れています。

techacademy.jp

モデルの継承構造

f:id:simpledancer:20171204112259p:plain

UserモデルとMicropostモデルはいずれも、ApplicationRecordというクラスを継承しています (Rubyでは継承関係を<記号で表現します) 

ApplicationRecordクラスは、Active Recordが提供する基本クラス ActiveRecord::Base を継承しています。

このActiveRecord::Baseという基本クラスを継承したことによって、作成したモデルオブジェクトはデータベースにアクセスできるようになり、データベースのカラムをあたかもRubyの属性のように扱えるようになります。

 コントローラの継承構造

f:id:simpledancer:20171204112402p:plain

UsersコントローラとMicropostsコントローラはいずれもApplicationControllerを継承しています 

ApplicationControllerがActionController::Baseというクラスを継承していることがわかります。このクラスは、RailsのAction Packというライブラリが提供しているコントローラの基本クラスです。

 

 モデルの継承関係と同様に、UsersコントローラもMicropostsコントローラも最終的にはActionController::Baseという基本クラスを継承しています。

このため、どちらのコントローラもモデルオブジェクトの操作や、送られてくるHTTP requestのフィルタリング、ビューをHTMLとして出力などの多彩な機能を実行できるようになっています。

Railsのコントローラは必ずApplicationControllerを継承しているので、Applicationコントローラで定義したルールは、アプリケーションのすべてのアクションに反映されます

 

引用:Ruby on Rails チュートリアル:実例を使って Rails を学ぼう

ちなみにAction Packとはなんぞや??と思ったのでこちらも参考までに

Rubyist Magazine - RubyOnRails を使ってみる 【第 4 回】 ActionPack

URL を解析してアクションメソッドを呼び出してレスポンスを返すことが ActionPack の大事な仕事その一。 この機能は特に ActionController というくくりでまとめられている。 ActionController を構成するファイルは lib/action_controller/ に置かれている。

ActionPack の大事な仕事その二はテンプレートを元にレスポンスを作ること。 このうち、テンプレートを作成するのに役立つ機能が ActionView としてまとめられている。

Rails では ERB で HTML テンプレートを書く。このテンプレートを書きやすくするのが ActionView の仕事。

 つまりAction packとは

  • アクションメソッドを呼び出してレスポンスを返す
  • テンプレートを元にレスポンスを作る

ちょっと理解が及ばないのでここはメモに止めておこうと思います。

参考

techacademy.jp

 

www.geocities.jp