0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ApplicationController と ActionController の違い

Posted at

ApplicationController と ActionController

1. ApplicationController

  • app/controllers/application_controller.rb
  • すべてのコントローラの親クラスとして機能し、共通の機能やフィルタを定義する場所。
    コントローラの先頭に「○○Controller < ApplicationController」という形で書かれる。
    users_controller.rb
    class UsersController < ApplicationController
    end
    
    posts_controller.rb
    class PostsController < ApplicationController
    end
    
  • アプリケーション固有のフィルタやヘルパーメソッドを定義する場所。
    例:ログイン、ログアウトした時、どこにリダイレクトするかなどは、共通なのでapplication_controller.rbに書く。
    application_controller.rb
    class 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. ActionController

  • Railsフレームワークの一部であり、コントローラの機能を提供するモジュールやクラスのセット。
  • ActionController::BaseがApplicationControllerのスーパークラス。
    application_controller.rb
    class ApplicationController < ActionController::Base
    end
    
  • HTTPリクエストの処理、レスポンスの生成、セッション管理などの低レベルの処理を担当。
  • RailsのMVCアーキテクチャにおいて「C(コントローラ)」の振る舞いを定義している。

ActionController.png


公式ガイド読む箇所:


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?