Zab*_*bba 40 devise ruby-on-rails-3
使用Devise on Rails,是否有一些方法可以列出当前有活动会话的所有用户,即当前登录的用户?
PS.我正在寻找一个强大的解决方案,而不是像这个问题中那样简单化的东西
小智 84
只需在ApplicationController中添加after_filter即可
after_filter :user_activity
private
def user_activity
current_user.try :touch
end
Run Code Online (Sandbox Code Playgroud)
然后在用户模型中添加在线?方法
def online?
updated_at > 10.minutes.ago
end
Run Code Online (Sandbox Code Playgroud)
你也可以创造范围
scope :online, lambda{ where("updated_at > ?", 10.minutes.ago) }
Run Code Online (Sandbox Code Playgroud)
cti*_*ide 24
https://github.com/ctide/devise_lastseenable
您可以使用我编写的这个gem来存储用户的"last_seen"时间戳.从那里开始,显示过去5或10分钟内last_seen的用户非常简单.
Rya*_*Epp 20
如果你对每次访问数据库感到困扰.单.HTTP.请求.只有一些小窗口,你可以假设用户在线; 我有一个替代解决方案.
使用websockets和redis,可以可靠地将用户的在线状态提升到毫秒,而无需花费数十亿美元进行磁盘写入.不幸的是,它需要更多的工作,并有两个额外的依赖,但如果有人感兴趣我做了一个非常详细的写在这里: