helperメソッドについて
helperメソッドの使用方法について
app/helpers/sessions_helper.rb
module SessionsHelper
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
def logged_in?
!!current_user
end
end
ApplicationControllerにメソッドを定義して、helperとして使用したいものについてはhelper_methodsというメソッドでcontrollerのメソッドをhelperとして使用するという方法が一般的であるようです。helperはViewのみで使用する目的で実装し、Controllerにincludeする書き方ですと使用しないメソッドまでincludeされてしまうのが問題となっています。
application.controlelr.rb
protect_from_forgery with: :exception
before_action :authenticate_user
helper_method :current_user, :logged_in?★
private
def authenticate_user
redirect_to login_url unless logged_in?
end
def log_in(user)
session[:user_id] = user.id
end
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
def logged_in?
current_user.present?
end
def log_out
session.delete(:user_id)
end
end
log_inメソッドやlog_outメソッドをviewで使用しないため、下記には追加しません。
helper_method :current_user, :logged_in?
参考記事