В моей модели пользователя у меня есть:
acts_as_authentic do |c|
c.perishable_token_valid_for = 30.minutes
end
В моем контроллере приложений у меня есть стандартный шаблонный код:
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.record
end
Теперь, на мой взгляд, мне нужно посмотреть, вошел ли пользователь в систему:
<% if current_user %>
Sign Out
<% else %>
Sign In
<% end %>
При каждом отдельном запросе вызывается current_user, и это вызывает вызов SELECT в базу данных для поиска пользователя, затем вызов UPDATE, который обновляет last_request_at и perishable_token, даже если я установил perishable_token_valid_for = 30.minutes.
У кого-нибудь есть лучший способ проверить, вошел ли пользователь в систему, не вызывая SELECT и UPDATE на каждой странице моего приложения.
Кто-нибудь знает, почему скоропортящийся токен продолжает обновляться, даже если я установил его действительным в течение 30 минут ???