はじめに
deviseで自動作成されるルーティングである「sessions」「password」「registrations」に関する備忘録です。
Prefixによる処理の記述はよく行いますが、「Prefixを見ただけでどんな処理が実行されるか?」をパッとイメージできなかったので整理しました。
ミスがあれば、コメントで教えてください。
開発環境
- Ruby 2.7.2
- Rails 6.1.3
- PostgreSQL 13.2
事前準備
まずはログイン機能をもつサンプルアプリを下記コマンドで作成します。
DBはPostgreSQL、テストファイルは不要なので-Tを付けます。
rails new sample -d postgresql -T
gem 'devise'
の記述をGemfileに追加し、bundle install
をします。
次に、下記コマンドを実行し、ログイン機能に対応したUserモデルを作成します。
rails g devise:install
rails g devise User
rails db:migrate
最後に、下記コマンドでDBの作成とマイグレーションを実行します。
rails db:create
rails db:migrate
http://localhost:3000/users/sign_inにアクセスして、ログイン画面が表示されれば準備OKです。
deviseで作成されたPrefixについて
現段階のuser関連のルーティング
rails routes | grep user
を実行し、現段階のuser関連のルーティングを確認します。
コマンドを実行すると、下記が表示されます。
各行の一番最初の文字列がPrefixですね。
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
POST /users/password(.:format) devise/passwords#create
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
POST /users(.:format) devise/registrations#create
この結果を見てみると、作成されたPrefixは「user_session」「user_password」「user_registration」に関連していることがわかります。
大雑把ですが、それぞれこんな役割があります。
- user_session:ログイン・ログアウト関連
- user_password:パスワードの更新・再発行などパスワード関連
- user_registration:新規登録やユーザーデータの更新・削除など、登録情報関連
VERBがGETのものに限りますが、「http://localhost:3000/~~~ 」の~~~を上記のURLに変更して、どんな画面にアクセスするか確認してみてください。
user_session
user_sessionに関するルーティングは、以下の通りです。
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
- new_user_session:ログインページへのアクセス
- user_session:ログイン処理
- destroy_user_session:ログアウト処理
user_password
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
user_password PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
POST /users/password(.:format) devise/passwords#create
- new_user_password:パスワード再発行画面へのアクセス
- edit_user_password:パスワード編集画面へのアクセス
- user_password:パスワードの更新や削除などの処理
user_registration
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
new_user_registration GET /users/sign_up(.:format) devise/registrations#new
edit_user_registration GET /users/edit(.:format) devise/registrations#edit
user_registration PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
POST /users(.:format) devise/registrations#create
- new_user_registration:アカウント登録ページへのアクセス
- edit_user_registration:アカウント編集ページへのアクセス
- user_registration:アカウント編集、更新、削除の処理
最後に
今回はdeviseで自動作成されるルーティングのPrefixについてまとめました。
Prefixから処理の内容をイメージするために整理しましたが、もう少し勉強が必要な箇所がある(特に、passwordらへん)ので、引き続き勉強を続けていきます。