前提
・タイムアウトのメソッドを定義
・コード自体間違っていないにもかかわらず、セッションがnilと判定されてしまい、メソッドがうまく処理されずエラーとなる。
タイムアウトのメソッド
sessions_controller.rb
def create
# ...
session[:last_access_time] = Time.current
# ...
end
application_controller.rb
TIMEOUT = 5.minutes
def time_out
if session[:last_access_time] > TIMEOUT.ago
session[:last_access_time] = Time.current
else
session.delete(:user_id)
flash[:danger] = "タイムアウトしました。"
redirect_to :login
end
end
上記のメソッドを組み、その後ログインを試みるとエラーが発生する。
NoMethodError (undefined method `>=' for nil:NilClass):
# session[:last_access_time] がnil判定される。
解決方法
ブラウザ側のクッキーを削除することで解決しました。
おそらくログインしている状態でメソッドを定義したから、
「session[:last_access_time]なんかないぞ」って怒られてしまったのかもしれません。