How To: Add timeout_in value dynamically

Nigel Baillie edited this page Jun 19, 2017 · 10 revisions
Clone this wiki locally

How To: Add timeout in value dynamically

This feature was added in version 1.5.2 and is not available in older versions of Devise

To dynamically set the timeout for each user, you can define a method in the user model called timeout_in that returns the timeout value.

class User < ActiveRecord::Base
  devise (...), :timeoutable

  def timeout_in
   return 1.year if admin?

timeout_in should return a integer with the number of seconds (the timedout? method that devise uses calls the ago method on what timeout_in returns). Of course, you can use Rails 10.seconds or 1.hour to improve readability.