devise で使えるメソッドとカスタマイズについて
devise を使って今アプリを作っているけれど、devise は重い gem のひとつであり導入は慎重に、、みたいな記事を見つけた。サンプルで作るにはいいけど、いざ実務で作るとなった時は一から自分で作ったほうがいいのかも。
devise で使えるヘルパーメソッドについて
(Userモデルの場合)
- before_action :authenticate_user!
- user_signed_in?
- current_user
- user_session
よく使いそうな便利なメソッドが4つ用意されている。
場合によってはカスタマイズも必要。
before_action :authenticate_user!
ログイン判定に使う。コントローラーの先頭に設置。ログインユーザーにしか実行できない処理がある場合使う。
only と併用して使うこと多い。
class ArticlesController < ApplicationController before_action :authenticate_user!, only: [:show] def index end # showのときだけ authenticate_user! が発動。 def show end end
user_signed_in?
コントローラー、ビュー問わず利用でき、 authenticate_user! より細かいログイン判定の条件分岐が可能。
current_user
現在ログインしているユーザー
user_session
ユーザーのセッション情報を設定・取得できる。
今のところ使ったことがないので使う機会があったら調べて更新する。
authenticate_user! のカスタマイズ
便利なカスタマイズ方法を見つけたのでメモ。
authenticate_user! でログインしていなかった場合、デフォルトだと new_user_session_path(/users/sign_in)にリダイレクトされてしまうが、自分でログインページを自作した場合などは、そのページに飛ばすようにしたい。
github の公式 wiki ではこちらで方法が案内されている。
けれど、上記は少し面倒なので、直接自分でメソッドを作るほうが簡単に実装できる。
before_action :authenticate def authenticate redirect_to new_user_registration_url unless user_signed_in? end
いい方法を発見できて嬉しい。