RailsGem Devise利用について

最近開発でDevise4.9.2を触れる機会があったので、備忘録を作成しました。

### 1. Deviseのインストール
GemfileにDeviseを追加
```
gem 'devise', '4.9.2'
```
以下のコマンドを実行してDeviseをインストール
```
bundle install
```
Deviseの初期設定を実施
```
rails generate devise:install
```

### 2. モデルの作成とマイグレーションの実行
Deviseを使用するモデルを作成
※ここでは、Userモデルを例にします。

```
rails generate devise User
```
※コマンドを実行すると、Userモデルとそれに関連するマイグレーションファイルが生成されます。生成されたマイグレーションファイルは、ユーザーの認証に必要な情報（メールアドレスやパスワードなど）をデータベースに保存するためのものです。

マイグレーションを実行して変更をデータベースに反映
```
rails db:migrate
```
### 3. Viewのカスタマイズ
Deviseは、ログインや登録などの一般的な認証ビューを提供しますが、これらをカスタマイズすることも可能です。以下のコマンドを実行すると、Deviseのビューファイルがアプリケーションのapp/viewsディレクトリにコピーされます。
```
rails generate devise:views
```
※このコマンドを実行すると、Deviseのビューファイルが生成され、これを自由にカスタマイズすることが可能になります。

| 画面名                         | パス                                             | View画面の格納場所                                 |
|------------------------------|------------------------------------------------|-----------------------------------------------|
| メール確認要求画面                | /users/confirmation/new                         | app/views/devise/confirmations/new.html.erb   |
| メール確認指示                   | メール                                          | app/views/devise/mailer/confirmation_instructions.html.erb |
| メール変更通知                   | メール                                          | app/views/devise/mailer/email_changed.html.erb |
| パスワード変更通知               | メール                                          | app/views/devise/mailer/password_change.html.erb |
| パスワードリセット指示           | メール                                          | app/views/devise/mailer/reset_password_instructions.html.erb |
| アカウントロック解除指示          | メール                                          | app/views/devise/mailer/unlock_instructions.html.erb |
| パスワードリセット要求画面        | /users/password/new                             | app/views/devise/passwords/new.html.erb |
| パスワードリセット画面            | /users/password/edit                            | app/views/devise/passwords/edit.html.erb |
| ユーザー登録画面                 | /users/sign_up                                  | app/views/devise/registrations/new.html.erb |
| ユーザー情報編集画面              | /users/edit                                     | app/views/devise/registrations/edit.html.erb |
| ログイン画面                    | /users/sign_in                                  | app/views/devise/sessions/new.html.erb |
| 共有エラーメッセージ部分テンプレート | 任意の画面                                      | app/views/devise/shared/_error_messages.html.erb |
| 共有リンク部分テンプレート         | 任意の画面                                      | app/views/devise/shared/_links.html.erb |



### 4. Controllerのカスタマイズ
Deviseのコントローラーもカスタマイズ可能です。例えば、ユーザー登録後のリダイレクト先を変更したい場合などは、Deviseのコントローラーをオーバーライドする必要があります。

以下のコマンドで、Deviseのコントローラーを生成

```
rails generate devise:controllers users
```
※その後、生成されたコントローラーファイル (app/controllers/users/registrations_controller.rbなど)を編集することで、Deviseのデフォルトの挙動をカスタマイズできます。

### 5. ルーティングのカスタマイズ
Deviseのルーティングもカスタマイズ可能です。config/routes.rbファイルにて、Deviseのデフォルトルーティングを上書きすることが可能です。

以下に、Deviseのルーティングをカスタマイズする一例を示します。ここでは、ユーザーのサインアップとサインインのルートをカスタマイズしています。

```
devise_for :users, skip: [:sessions, :registrations]

as :user do
  get 'signin', to: 'devise/sessions#new', as: :new_user_session
  post 'signin', to: 'devise/sessions#create', as: :user_session
  delete 'signout', to: 'devise/sessions#destroy', as: :destroy_user_session
  get 'signup', to: 'devise/registrations#new', as: :new_user_registration
  post 'signup', to: 'devise/registrations#create', as: :user_registration
end
```

以上がDevise (4.9.2)のインストールからカスタマイズまでの基本的な手順です。具体的な実装はアプリケーションの要件によりますので、適宜調整してください。