0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails】セッションタイムアウトがうまくいかない事象の解決

Last updated at Posted at 2020-07-13

前提

・タイムアウトのメソッドを定義
・コード自体間違っていないにもかかわらず、セッションが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]なんかないぞ」って怒られてしまったのかもしれません。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?