【includeメソッドとSessionshelperについて】
logged_in?メソッドを使った時に、
「なぜSessionsHelperで定義したlogged_in?メソッドを、UsersControllerで使えるのかな?」という疑問が湧いたので調べてみました。
「UsersControllerはapplicationControllerを継承してるけど、SessionsHelperは継承してないから使えないんじゃないの?」と思い、UsersControllerでを見ると、
class UsersController < ApplicationController
やっぱりSessionsHelperは無い。
ですが、ApplicationControllerを見に行くと、
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
include SessionsHelper
ApplicationControllerの中に、【include SessionsHelper】と書いてある。
「これはSessionsHelperのメソッドも使えるよう拡張していますよ」という意味。
だからUsersControllerでもSessionsHelperのメソッドが使えるということだった。
「どのページでも使うようなメソッドはSessionsHelperに書くことが多いよ」と聞いたことがありましたが、その意味が理解出来ました。