Ruby
Rails
devise

Railsのdeviseでログインしている時に新規登録画面、ログイン画面へ行こうとしたらルートへ飛ばす

やりたいこと

Railsのdeviseを使い、
「ログインしている状態」の時は
新規登録orログイン画面へ飛べないようにする。

動き

ログインしている時に
新規登録orログイン画面へ飛ぼうとしたら
ルートへ飛ばす。

実装方法

ルートを確認すると以下のようになっている。
新規登録 > sign_up > devise/registrasions#new
ログイン > sign_in > devise/sessions#new

image.png

上記2つのアクション時に
サインインしていたらルートへリダイレクトするように設定する。

コード

新規登録

app/controllers/users/registrations_controller.rb
class Users::RegistrationsController < Devise::RegistrationsController
  # before_action :configure_sign_up_params, only: [:create]
  # before_action :configure_account_update_params, only: [:update]

  # GET /resource/sign_up
  # newの部分のコメントアウトを外し、redirect_toを追加
  def new
    redirect_to :root if user_signed_in?
    super
  end

  # POST /resource
〜〜〜〜〜
省略
〜〜〜〜〜

end

ログイン

app/controllers/users/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
  # before_action :configure_sign_in_params, only: [:create]

  # GET /resource/sign_in
  # newのコメントアウトを外してリダイレクト、ifを入れる
  def new
    redirect_to :root if user_signed_in?
    super
  end

  # POST /resource/sign_in
〜〜〜〜
省略
〜〜〜〜

end