Я работаю над приложением, которое имеет подобную логику как ТАК относительно того, когда пользователь был в последний раз замечен. Я столкнулся с концептуальной проблемой, что я надеюсь, что некоторые из Вас Гуру могут выручить меня с.
Все действие зарегистрировано таблица ActivityLog в базе данных
Когда зарегистрированный пользователь поражает сайт, и новая сессия создается, я обновляю журнал операций с UserID и некоторой очень универсальной информацией. То же самое происходит, когда они создают новую запись, обновляют их профиль и т.д.
Проблема, которую я имею, является этим.
Если я использую новый объект действия, то перешел к моей странице личного аккаунта, "Последний Замеченный" обнаруживается как 1 секунду назад, потому что я ПРОСТО совершил нападки, дб на сессии запускаются... Это не хорошо, потому что я хочу видеть то, что я был "последним" там, не, когда я там "теперь".
Однако, если я использую Skip(1).Take(1)
для получения второй записи в базе данных затем когда кто-то еще посмотрел мой профиль, в то время как я, возможно, "просто" вошел в систему..., они будут видеть, что я шел, говорят неделю назад и не сегодня.
Какую логику Вы использовали бы, чтобы иметь Ваш пирог и съесть его также?
Я использую ASP.NET MVC2 и Linq к SQL, но я думаю, что этим вопросом является больше агностика языка.
Похоже, вы могли бы просто показать вторую самую последнюю запись для текущего пользователя, а для всех остальных пользователей показать самую последнюю.
Я бы сделал (просто чтобы избежать большого логического цикла) добавил бы два поля. current_seen
и last_seen
. При входе в систему переместите current_seen
в last_seen
и установите current_seen
на текущую метку времени. Затем отобразите last_seen
как их «Последний раз видели XX / XX / XXX».
Одно из мест, где можно посмотреть, - это исходный код OSQA (система вопросов и ответов с открытым исходным кодом) -
И да, это выглядит очень похоже на StackOverflow (мягко говоря).