LoginSignup
1

More than 3 years have passed since last update.

【Rails6】deviseによる新規登録・ログイン時のリダイレクト先変更

Posted at

はじめに

ポートフォリオ作成中に詰まった点を備忘録として記述しています。
今回は、deviseにてユーザー新規登録・ログイン機能を実装しました。法人会員と個人会員の2種類のログインユーザーがおり、新規登録時及びログイン時には、法人or個人によって違う画面遷移にしたいと思い、リダイレクト先の変更を試みました。

deviseではデフォルトでリダイレクト先が指定されているため、deviseのコントローラーをカスタマイズする必要がありました。

環境

Ruby on Rails'6.0.0'
Ruby'2.6.5'

前提

deviseを使用し、ログイン機能を実装済み。

①controllerの作成

ターミナル
% rails g devise:controllers companies

上記コマンドにより、法人側deviseのcontrollerを編集することができます。app/controllers/companies側にファイルが生成されると思います。

②ルーティングの設定

rails routesでルーティングを確認すると、

ターミナル
new_company_session GET      /companies/sign_in(.:format)             devise/sessions#new
company_session POST       /companies/sign_in(.:format)            devise/sessions#create
(省略)
new_company_registration GET      /companies/sign_up(.:format)        devise/registrations#new

上記のように表示されます。devise/sessionsやdevise/registrationでは、反映されないため、ルーティングでカスタマイズを行います。

config/routes.rb
devise_for :companies, controllers: {
    sessions:      'companies/sessions',
    registrations: 'companies/registrations'
  }

カスタマイズを行い、再度rails routesを行うと下記のように表記が変わると思います。

ターミナル
new_company_session GET      /companies/sign_in(.:format)             companies/sessions#new
company_session POST       /companies/sign_in(.:format)            companies/sessions#create
(省略)
new_company_registration GET      /companies/sign_up(.:format)        companies/registrations#new

③controllerの編集

ここから、リダイレクト先を指定するメソッドを定義します。

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

  def after_sign_up_path_for(_resource)
    companies_articles_path(リダイレクト先のpath)
  end
(省略)
end
app/controllers/companies/sessions_controller.rb
class Companies::SessionsController < Devise::SessionsController
  before_action :configure_sign_in_params, only: [:create]

  def after_sign_in_path_for(_resource)
    companies_articles_path(リダイレクト先のpath)
  end
(省略)
end

上記でリダイレクト先を指定することができました!!!!

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
1