Показать последний посещенный / увиденный на странице профиля? - PullRequest
4 голосов
/ 15 июня 2009

На странице профиля этого сайта StackOverflow есть элемент с именем «Просмотрено: 2 часа назад» Как реализовать это в Rails? Я погуглил, но не смог найти точный кусок кода !!

Ответы [ 2 ]

2 голосов
/ 15 июня 2009

Я должен представить, что при создании учетной записи в 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 был найден, тогда будет считана временная метка и вычислена разница во времени. Проблема этого подхода в том, что он не работает, если пользователь использует другой веб-браузер или компьютер (или оба).

1 голос
/ 15 июня 2009

С другой стороны, если ваша пользовательская модель имеет столбец с именем «last_seen_at», вы можете обновлять его для каждого запроса вошедшего в систему пользователя. Тем не менее, я думаю, что это будет слишком тяжело для базы данных ...

Authlogic, потрясающий плагин для аутентификации пользователей, обновит магический столбец при последнем входе в систему, который похож (хотя и не совсем совпадает) с тем, что вы запрашивали в последний раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...