Как написать логику "Last Seen" в Stack Overflow - PullRequest
8 голосов
/ 06 июля 2010

Я работаю над приложением, которое имеет логику, аналогичную SO, в отношении того, когда пользователя в последний раз видели. Я столкнулся с концептуальной проблемой, с которой, я надеюсь, некоторые из вас, гуру, могут мне помочь.

Все действия регистрируются в таблице ActivityLog в базе данных

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

У меня проблема в следующем.

Если я использую самый последний элемент активности, а затем перехожу на страницу моей личной учетной записи, «Последнее посещение» отображается как 1 секунда назад, потому что я ПРОСТО БЫЛ на БД при запуске сеанса ... Это не хорошо, потому что я хочу чтобы увидеть, что я был "последним" там, а не когда я там "сейчас".

Однако, если я использую Skip(1).Take(1), чтобы получить вторую запись в базе данных, то когда кто-то еще просматривает мой профиль, в то время как у меня может быть "только что" зарегистрирован ... они увидят, что я был, скажем, неделю назад, а не сегодня.

Какую логику вы бы использовали, чтобы иметь свой пирог и есть его?

Я использую ASP.NET MVC2 и Linq to SQL, но я думаю, что этот вопрос более независим от языка.

Ответы [ 3 ]

3 голосов
/ 06 июля 2010

Что я хотел бы сделать (просто чтобы избежать большого логического цикла), так это добавить два поля. current_seen и last_seen. При входе в систему переместите current_seen в last_seen и установите current_seen в текущую отметку времени. Затем отобразите last_seen как «Последний раз видели в XX / XX / XXX».

3 голосов
/ 06 июля 2010

Похоже, вы могли бы просто показать вторую самую последнюю запись для текущего пользователя, а для всех остальных пользователей показать самую последнюю.

2 голосов
/ 06 июля 2010

Одно из мест, где можно найти исходный код OSQA (система с открытым исходным кодом и система) -

http://www.osqa.net/

И да, это очень похоже на StackOverflow (скажем,как минимум).

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