Вы можете добавить before_filter в ApplicationController, чтобы установить текущую дату / время в поле last_request_at в вашей таблице пользователей, которое вы должны будете сначала добавить с помощью миграции. , В методе, вызываемом из before_filter, вы, конечно же, хотите убедиться, что пользователь прошел аутентификацию первым. И вы можете захотеть исключить фильтр для действий, не требующих аутентификации.
Затем, если вы включили модуль Timeoutable в свою модель User, вы можете увидеть, является ли сеанс пользователя текущим или нет, сделав такой вызов:
user.timedout?(user.last_request_at)
Метод timedout? (Last_access) , определенный в модуле Timeoutable, будет сравнивать время ожидания сеанса Devise с временем / датой последнего запроса.
В качестве примечания вы можете обновить last_request_at только в том случае, если значение last_request_at больше минуты назад (или любого выбранного вами временного интервала). В противном случае, если ваша страница выполняет много вызовов контроллера, как моя делает через AJAX, в одном запросе будет много ненужных обновлений БД.