はじめに
railsの認証まわりの実装についてメモを残します。
ユーザーの登録の時は入力画面と確認画面があることが多いですよね。
deviseを使って上記の実装をしようとしたのですが、思った以上に大変でした。
どのようなアプローチで実装しようかと考えたので記事にしようと思います。
環境
rails 6.1.6
ruby 3.0.6
devise 4.9.3
仕様
仕様は下記のようになっています。
- 入力画面でユーザーが入力する
- 入力画面から確認画面への動線がある
- 確認画面で入力した内容を確認できる
- 確認画面から入力画面へ遷移できる
- 確認画面から入力画面へ遷移するときはフォームの初期値に入力した値がセットされている
実装
下記でそれぞれの内容について詳しく紹介しようと思います。
入力画面
入力画面はrailsのフォームビルダーを使って作成しました。
この箇所は通常のユーザー新規作成の箇所とあまり変わりません。
確認画面
確認画面では入力画面で入力した内容を表示します。
DBに保存してない値をどのように表示するか悩みました。
session, flashに値を一時的に保存するなども考えたのですがredisを使うことにしました。
確認画面に遷移する前にredisにユーザーが入力した値を保存し、確認画面では保存した値を表示します。
確認画面から入力画面への遷移
確認画面から入力画面へ遷移したときはフォームの初期値に値を設定しておきたいです。
これにはflashを使いました。
画面リロードでフォームに設定した値は消えてしまいますが、動作としては問題ないと思います。
まとめ
一般的な認証機能ですが実装してみると悩む箇所が多かったです。
他の実装例など興味あるので教えてもらえると嬉しいです。