Rails Edgeガイドから:
4.3.2 アプリケーションが提供するコントローラを使用する
Rails コントローラーは通常、認証やセッション変数へのアクセスなどのコードを共有するため、デフォルトでは ApplicationController を継承します。ただし、Rails エンジンはメイン アプリケーションから独立して実行するようにスコープが設定されているため、各エンジンはスコープが設定された ApplicationController を取得します。この名前空間はコードの競合を防ぎますが、多くの場合、エンジン コントローラーはメイン アプリケーションの ApplicationController のメソッドにアクセスする必要があります。このアクセスを提供する簡単な方法は、エンジンのスコープ ApplicationController を変更して、メイン アプリケーションの ApplicationController から継承することです。私たちの Blorgh エンジンの場合、これは app/controllers/blorgh/application_controller.rb を次のように変更することによって行われます。
class Blorgh::ApplicationController < ApplicationController
end
デフォルトでは、エンジンのコントローラーは Blorgh::ApplicationController から継承します。したがって、この変更を行うと、メイン アプリケーションの一部であるかのように、メイン アプリケーションの ApplicationController にアクセスできるようになります。
この変更には、ApplicationController を持つ Rails アプリケーションからエンジンを実行する必要があります。