Я должен представить, что при создании учетной записи в Stack Overflow ваш IP-адрес сохраняется в базе данных в таблице Users. Затем, когда вы посещаете страницу на сайте, IP-адрес извлекается из HTTP-запроса, и в таблице «Пользователи» выполняется поиск соответствующего IP-адреса. Если есть совпадение, то эта запись пользователя обновляется с отметкой времени, представляющей последнее посещение.
Конечно, этот подход предполагает, что посетители вашего сайта имеют фиксированный IP-адрес, что может быть не так, особенно для пользователей с коммутируемым доступом в Интернет.
Вы можете легко зарегистрировать текущий IP-адрес в модели Rails:
class SomeModel < ActiveRecord::Base
def request=(request)
self.ip_address = request.remote_ip #ip_address is a string
end
end
Затем в помощнике по просмотру вы можете сделать что-то вроде:
def last_seen
"Seen #{time_ago_in_words(Time.now - some_model.updated_at)} ago"
end
В качестве альтернативы сайт может выдавать cookie, содержащий временную метку посещения, которую сервер будет искать. Если cookie был найден, тогда будет считана временная метка и вычислена разница во времени. Проблема этого подхода в том, что он не работает, если пользователь использует другой веб-браузер или компьютер (или оба).