Application
Controller と Action
Controller
1. Application
Controller
- app/controllers/application_controller.rb
- すべてのコントローラの親クラスとして機能し、共通の機能やフィルタを定義する場所。
コントローラの先頭に「○○Controller < ApplicationController」という形で書かれる。users_controller.rbclass UsersController < ApplicationController end
posts_controller.rbclass PostsController < ApplicationController end
- アプリケーション固有のフィルタやヘルパーメソッドを定義する場所。
例:ログイン、ログアウトした時、どこにリダイレクトするかなどは、共通なのでapplication_controller.rbに書く。application_controller.rbclass ApplicationController < ActionController::Base # メアドではなく、名前でログイン def configure_permitted_parameters devise_parameter_sanitizer.permit(:sign_up, keys: [:name]) end # ログアウトしたら、ルートにリダイレクト def after_sign_out_path_for(resource_or_scope) root_path end # ログインしたら、ユーザページにリダイレクト def after_sign_in_path_for(resource) user_path(current_user) end # ログインしているユーザーは、ルートに入らず、ユーザーページにリダイレクト def redirect_if_logged_in if user_signed_in? && request.path == root_path redirect_to user_path(current_user) end end end
2. Action
Controller
- Railsフレームワークの一部であり、コントローラの機能を提供するモジュールやクラスのセット。
- ActionController::BaseがApplicationControllerのスーパークラス。
application_controller.rb
class ApplicationController < ActionController::Base end
- HTTPリクエストの処理、レスポンスの生成、セッション管理などの低レベルの処理を担当。
- RailsのMVCアーキテクチャにおいて「C(コントローラ)」の振る舞いを定義している。
公式ガイド読む箇所: