わかりやすくするために、Rails アプリケーションごとに異なるモジュールに分割することにしました。その一環として、各モジュールに独自の ApplicationController を持たせたいと考えています。そこで、次のように各モジュールのアプリケーションコントローラーを調べて定義しました。
module Login
class ApplicationController < ::ApplicationController
...
end
end
次に、ログイン モジュールに別のコントローラーを作成します。
module Login
class HomeController < ApplicationController
end
end
私の予想では、これは最初に Login モジュールでアプリケーション コントローラーを検索するものでしたが、実際にはグローバル アプリケーション コントローラーを継承していることがわかります (Login::ApplicationController で行った宣言は取得されません)。これに関するいくつかの情報を検索しましたが、ログインではなくトップレベルの名前空間で ApplicationController を使用している理由を理解できませんでした。HomeController が Login::ApplicationController から継承されていれば問題なく動作しますが、将来のために Login:: プレフィックスがないと動作しない理由を知りたいと思います。