【Rails】deviseによる認証

deviseを使って認証機能を実装してみました。
とても便利な機能なのですが、いくつか迷った箇所があったので使い方をまとめました。

Setup

導入の部分は多くのサイトで詳細が書いてあるのでコマンドだけ書いておきます。

画面

作成されたviewの一覧です。

filefunction
confirmations/new.html.erbパスワード再発行
passwords/edit.html.erbパスワード編集
passwords/new.html.erbパスワード再発行
registrations/edit.html.erbユーザ情報編集
registrations/new.html.erbユーザ新規登録
sessions/new.html.erbログイン
unlocks/new.html.erbアンロック指示
mailer/confirmation_instructions.html.erb登録確認メール
mailer/email_changed.html.erbパスワード変更メール
mailer/password_change.html.erbパスワード変更メール
mailer/reset_password_instructions.html.erbパスワードリセット確認メール
mailer/unlock_instructions.html.erbアカウントロックメール

Controllerをカスタマイズ

作成されたControllerをみてみるとコメントアウトされていると思います。

デフォルトでは親クラスであるdeviseディレクトリ配下のregistrations_controllerの処理が実行されているためusersディレクトリ配下の子クラスでオーバーライドします。
そのため以下のようにコメントアウトを外してsuperの後に記載すれば良いです。

ちなみに親クラスがあるdeviseディレクトリはgemのインストールディレクトリに存在するため作業しているプロジェクトの中にはありません。

registrations_controller.rb

ただ、このままだとrouteのpathが親クラスのため子クラスの処理が実行されません。そのためrouteを以下のように変更します。

routes.rb

これで追加した処理が実行されます。

Viewをカスタマイズ

こちらもデフォルトではdeviseディレクトリ配下のviewが使用されるためusersディレクトリ配下のviewを編集して使用した場合、以下の通り設定を変更します。

config/initializers/devise.rb

これで編集した内容が適用されます。