【Rails】deviseのモジュールをサラッと確認

deviseモジュール全部みたときに、全部説明しろって言われてたらできないなぁとふと思ったので、とりあえずサラッと確認してみました。

まず導入

rails newは済んでいます。

gem 'devise'
$ bundle
$ rails generate devise:install
$ rails generate devise User
$ rails db:migrate

するとUserモデルはこんな感じになっています。

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable
end

それぞれ何ができるのか

database_authenticatable

サインイン時にパスワードをハッシュし、ユーザーの信頼性を検証するためのモジュール。

registerable

新しいリソースの登録(ユーザーのサインアップなど)に関連するモジュール

recoverable

パスワードのリセットを処理するためのモジュール

rememberable

保存されたCookieからユーザーを記憶するためのトークンの生成とクリアを管理するためのモジュール

validatable

ユーザーのメールアドレスとパスワードに必要なすべての検証を作成するためのモジュール パスワードの有無、確認、長さもテストする。

confirmable

メールに記載されているURLから本登録を完了する機能を提供するモジュール。 サインイン中にアカウントが認証済みかどうかも検証できる。

lockable

一定回数の試行後にユーザーアクセスをブロックする処理を行うためのモジュール。ロックを解除するために、解除のためのメールと時間経過の2つの方法を設定できる。

timeoutable

ユーザーセッションがすでに期限切れになっているかどうかを確認するモジュール。 設定された時間後にセッションの有効期限が切れると、ユーザーは再度クレデンシャルを要求され、サインインページにリダイレクトされる。

trackable

ユーザーのサインインに関する情報を追跡するモジュール。 以下のカラムを追跡する。

  • sign_in_count: サインインの回数
  • current_sign_in_at: サインインののタイムスタンプ
  • last_sign_in_at: 前回のサインインのタイムスタンプ
  • current_sign_in_ip: ユーザーがサインインした際に更新されるリモート ip。
  • last_sign_in_ip: 前回サインインした際のリモート ip を保持する

omniauthable

モデルにOmniAuthサポートを追加するモジュール。

所感

lockable, timeoutable, trackable は何ができるのかちゃんと読んでなかったなぁと反省。 次はdevise導入後に基本的にできることをまとめてみたいと思います。