はじめに
deviseはユーザー認証機能を簡単に実装できるgemです。
導入後、便利なヘルパーメソッドを使用できるので頻用するものを紹介していきます。
RubyとRailsのバージョン
- Ruby 2.7.7
- Rails 6.0.6.1
deviseで使用できるヘルパーメソッド一覧
before_action :authenticate_user!
# コントローラーの先頭に記述。サインインユーザーのみ実行できるように制限出来る。
user_signed_in?
# ユーザーがサインインしているかどうかを確認。
current_user
# 現在サインインしているユーザーを指定出来る。
※deviseのmodelが「user」であると仮定します。
それ以外の場合は「user」部分を対応するmodel名に変更して下さい。
before_action :authenticate_user!
コントローラーの先頭に記述します。ログインンユーザーのみ実行出来るアクションを指定できます。
下記コードでは「new」「create」はログインユーザーのみ実行可能、それ以外ではログイン画面に遷移させる事が出来ます。
onlyを使用しなければ全てのアクションに対してログインを要求する事になります。
posts_controller.rb
class PostsController < ApplicationController
before_action :authenticate_user!, only: %i[new create]
end
user_signed_in?
コントローラーやビューで使用し、ログインしているユーザーかどうか確認します。
下記はログインしているユーザーであれば新規投稿のリンクを表示、未ログインであれば投稿出来ないように制御しています。
index.html.haml
- if user_signed_in?
= link_to '新規投稿' new_post_path
current_user
現在ログインしているユーザーの情報を取得出来ます。
posts_controller.rb
#一部省略
def index
# 現在ログインしているユーザーの情報を取得して表示する処理
@user = current_user
# 現在ログインしているユーザーの投稿情報を取得する処理
@posts = current_user.Post
end
最後に
忘備録としてまとめました。現在転職目指して勉強中です。
間違いがあればご指摘いただければ幸いです。
参考文献