Rails 3 +设计:user_signed_in? 对于数据库中的其他用户?

我正在构建一个应用程序,我想为给定用户添加在线状态。

我知道Devise有一个方法user_signed_in? 内置以检查使用该应用程序的用户是否已登录。 但是当我尝试将它用于这样的不同用户时:

user_signed_in?(user) user.user_signed_in? 

我显然得到一个未定义的方法错误。

Devise有这个方法还是我必须自己编写? 一种方法是将给定用户的在线状态存储在用户模型中。 什么是最好的解决方案?

我不是Devise的作者,但从我所知道的Warden / Devise中我也没有记录谁登录。

在User表中使用is_online列的问题是很难看到谁在网站上处于活动状态。 我会在您的User模型中添加一个名为last_seen的列作为日期时间,并在每次用户请求页面时使用Devise更新该列。 然后,您可以轻松添加User.online_count方法,或者查看用户是否在过去5分钟内在网站上看到过。

我在我的应用程序上使用了Devise,并在我第一次使用它时遇到了一些与你相同的问题。 您只是错误地使用辅助方法。 如果您想检查当前用户是否有会话并且已登录,则使用帮助程序:

 if user_signed_in? 

这与以下内容基本相同:

 if !current_user.nil? && current_user.signed_in 

如果您想检查用户对象是否已登录,则调用此方法:(其中user是用户模型对象)

 if user.signed_in? 

在routes.rb中使用devise_for :user