subtitle

RaiseTechの各種コースをはじめとしたイロイロな学習の記録

deviseのhelper

helper(ヘルパーメソッド)は、RailsのHTMLの中で使用できる機能で、処理をメソッド化して扱うことができる。

ログイン認証機能を実装する際に使用したdeviseにもいくつかのヘルパーがあるので、使いそうなものをまとめておく。

この時は、userという名前でdeviseのモデルを作成しているので、ヘルパーの名前にもuserがついているが、別の名前でdeviseのモデルを作成した場合は、それと同じ名前になる。


  • user_signed_in?:ユーザーがサインイン中ならtrue、サインアウト中ならfalseを返す
  • current_user:現在ログインしているユーザーのレコードを取得
  • current_user.id:現在ログインしているユーザーのidを取得
  • authenticate_user!:ユーザーがログインしていない場合は、ログインページにリダイレクト
  • user_session:ユーザーのセッション情報を取得


補足:

current_userはログイン時のみ有効なので、current_userを使う場合は、user_signed_in?がtrueの時のみ

authenticate_user!は、before_actionと共に使用する。(例:before_action :authentiated_user!)


before_actionについて

before_actionは、コントローラのアクションが行われる前に、やりたい処理がある場合に使う。

定義位置は、全てのアクションの前に記述する。

class UsersController < ApplicationController
  before_action :authenticated_user!
  def index
    @users = User.all
  end

  def show
    @user = User.find(params[:id])
  end
end


上記の例の場合だと、indexアクションやshowアクションが行われる前に、authenticated_user!メソッドが実行される。

つまり、ログイン前の場合は、ログインページにリダイレクトされる。