railsの○○Controller < ApplicationControllerってなに?

rails

本記事では、初心者向けにrailsの○○Controller < ApplicationControllerについての説明をしていきたいと思います。

rails g controllerを実行すると、自動でコントローラが作成されますが、上記の記載も勝手に作成されています。これが、どういう意味かを解説していこうと思います。

まず、”<“って何をしているの?

まずは、<の役割について解説します。結論から言うと、これは継承を表しています。

継承とは、親クラスのメソッドを子クラスに受け継いで使えるようにする動きのことを言います。下記図をご覧ください。

ChildクラスがParentクラスを継承しています。この場合、childにはmethod3、method4、method5のみが定義されていますが、継承元のParentクラスのメソッドも使用できるようになります。

継承することで継承元のメソッドを使用することができるわけです。

ApplicationControllerは何をしている?

それではControllerに戻ります。

class UsersController < ApplicationController
end

ここでは、ApplicationControllerが継承されていますね。ApplicationControllerはどこにあるかというと、app/controller/application_controller.rbにあります。

class ApplicationController < ActionController::Base
end

ApplicationControllerでは上記の記述があります。それではApplicationControllerが継承しているActionController::Baseはどこにあるかですが、このapp内にあるのではなく、外部から取得しているものになります。

これは、railsアプリを作成した時点で自動で読み込まれるようになっていて、これにより各コントローラーで例えばModel.allや、Model.find()などの関数が使用できるようになっています。

というわけで、rails標準のメソッドを使用するために、ApplicationController等を継承していると言うことになります。

ApplicationControllerについての補足(便利な使い方)

解説した通り、各controllerはApplicationControllerを継承しています。

なので、複数のコントローラで同じメソッドを使う場合に、ApplicationControllerに記載することでそれぞれのコントローラーから使用することができるようになります。

共通処理についてはこちらの記事でも解説していますので、コントローラについてより深く知りたい方はこちらもぜひ見てみてください。

コメント

タイトルとURLをコピーしました