Это зависит от того, что вы подразумеваете под «в настоящее время на сайте».
Добавление столбца currently_logged_in
, как вы описали, работает, если вы хотите отметить пользователей, которые в данный момент вошли в систему. Однако большинство пользователей этого не делаютВыйдите из системы при выходе из веб-сайта в эти дни, чтобы, вероятно, не делать то, что вы хотите.
Лучшим решением было бы добавить столбец last_active_at
, который можно обновлять в соответствии с текущим временем, когда пользователь выполняет некоторые действия.действие.Затем определите порог, который имеет смысл для вашего веб-сайта, скажем, 15 минут, и отметьте только пользователей в вашем списке, которые имеют значение last_active_at
меньше, чем 15 минут в прошлом.
Предполагая определение "активный"user "для вашего сайта включает в себя попадание в аутентифицированные конечные точки, это будет так же просто, как изменить ваш метод аутентификации на:
def self.authenticate(email, password)
user = User.find_by(email: email) # returns user or nil value
if user && user.authenticate(password)
user.update!(last_active_at: Time.now)
true
else
false
end
end