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!メソッドが実行される。
つまり、ログイン前の場合は、ログインページにリダイレクトされる。