Райан прав в том, что гем Devise по умолчанию не поддерживает опции: памятный и: временный. Однако, как и все в Ruby, если вам не нравится решение, принятое каким-либо другим кодером, особенно если оно отклоняется от нормы, которую, вероятно, ожидает большинство пользователей, вы можете просто отменить это.
Благодаря (отклоненному) запросу на вытягивание мы можем отменить это поведение, добавив следующий код в начало вашего файла конфигурации Devise (/config/initializers/devise.rb):
module Devise
module Models
module Timeoutable
# Checks whether the user session has expired based on configured time.
def timedout?(last_access)
return false if remember_exists_and_not_expired?
last_access && last_access <= self.class.timeout_in.ago
end
private
def remember_exists_and_not_expired?
return false unless respond_to?(:remember_expired?)
remember_created_at && !remember_expired?
end
end
end
end
Теперь это позволит вам настроить оба параметра и заставить их работать так, как вы ожидаете.
config.remember_for = 2.weeks
config.timeout_in = 30.minutes