RailsのDeviseとセットアップ方法


はじめに

この記事は、インターネット上の百科事典や技術情報サイト、勉強会を基に、RailsにおけるDeviseについて復習しやすいようにまとめた備忘録です。
技術的に誤っている点がございましたら、ご指摘いただけますと幸いです。

Deviseとは?

DeviseとはRailsで作成したアプリケーションに認証機能を実装できるgemの一つです。
Deviseを利用することでログイン機能を簡単に実装することができます。

Deviseの使い方

Gemfileの編集とインストール

Gemfile
gem 'devise'

以下の記事のGetting startedを参考にインストールします。
https://github.com/heartcombo/devise#getting-started

$ bundle install

Gemのインストール完了です。

Deviseのセットアップ

$ rails g devise:install

Deviseの設定ファイルをRailsアプリケーションにインストールするためのコマンドです。

$ rails g devise User

Deviseで認証するためのモデルを作成するコマンドです。
今回はUserモデルを作成すると想定してUserを入力しています。

$ rake db:migrate

作成したモデルを基にデータベースを作成します。
Rails5以降をインストールしている場合は、$ rails db:migrateコマンドを使えます。

$ rails g devise:views

app/views/devise配下にDeviseで使用するビューを作成するコマンドです。

Deviseに機能を追加する

Deviseには10個のモジュールが用意されています。
以下の各モジュールの概要についてはRailsにおけるDeviseとは?から引用させていただいております。

機能 概要
database_authenticatable サインイン時にユーザーの正当性を検証するためにパスワードを暗号化してDBに登録します。
registerable 登録処理を通してユーザーをサインアップします。また、ユーザーに自身のアカウントを編集したり削除することを許可します。
recoverable パスワードをリセットし、それを通知します。
rememberable 保存されたcookieから、ユーザーを記憶するためのトークンを生成・削除します。
trackable サインイン回数や、サインイン時間、IPアドレスを記録します。
validatable Emailやパスワードのバリデーションを提供します。独自に定義したバリデーションを追加することもできます。
confirmable メールに記載されているURLをクリックして本登録を完了する、といったよくある登録方式を提供します。また、サインイン中にアカウントが認証済みかどうかを検証します。
lockable 一定回数サインインを失敗するとアカウントをロックします。ロック解除にはメールによる解除か、一定時間経つと解除するといった方法があります。
timeoutable 一定時間活動していないアカウントのセッションを破棄します。
omniauthabl intridea/omniauthをサポートします。TwitterやFacebookなどの認証を追加したい場合は追加します。

Deviseが用意しているメソッド

current_user

現在ログインしているユーザーを取得することができるメソッドです。

備考

Deviseの導入方法と追加できる機能についてまとめさせていただきました。
Deviseは趣味で何回か利用していますが、学習内容をまとめておくことで理解度が高まったように感じます。
ここまで拝読していただき、ありがとうございました。

参考文献

DIVE INTO CODE MEDIA
- RailsにおけるDeviseとは?
Github
- heartcombo/devise
Railsについての知識を交換するコミュニティ
- 【オンライン開催】銀座Rails#24@リンクアンドモチベーション