0

是否有任何方法或 gem 来识别所有登录我们的应用程序的用户?. 提前致谢。

4

3 回答 3

2

首先,您需要使用除 CookieStore 之外的其他东西作为会话后端。如果您使用例如 ActiveRecord,您应该能够相对轻松地查询所有当前登录的用户。

我不知道这有什么宝石,但这听起来真的不像你需要一个。

于 2013-02-26T09:08:29.763 回答
1

你可以通过status在你的表中定义额外的字段说,说,来做到这一点users

因此,当任何用户获取时logged in,您必须将此字段设置为在线状态。

然后在您的控制器的创建方法中,您只需执行以下操作:

User.create(:status => "online", #other params go here)

您也可以使用状态定义新注册用户,例如offline

您可以在用户注册时执行以下操作:

User.new(:status => "offline", #other params go here)

然后要查找已登录的用户,您可以这样做:

@online_users = User.where(:status => "online")

更新:

对于没有点击注销按钮的用户,上面的想法是行不通的。

所以你必须将这个想法与Jugernaut 之类的东西结合起来,然后定期发送 ping 来了解用户是否仍然在那里。

于 2013-02-26T09:38:42.950 回答
1

这实际上取决于您用于登录系统的 gem。

如果您使用的是 Authlogic,我无法确定为用户模型创建的所有字段,但我相信您可以通过在名称范围内定义和搜索last_request_at等搜索在 5-10 分钟内完成.

如果您使用的是 Devise,并且特别想使用 gem,可以尝试以下操作: https ://github.com/ctide/devise_lastseenable

于 2013-02-26T09:47:00.533 回答