繁体   English   中英

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

[英]Rails 3 + Devise: user_signed_in? for a different user in the database?

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

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

user_signed_in?(user)

user.user_signed_in?

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

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

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

if user_signed_in?

这基本上与以下内容相同:

if !current_user.nil? && current_user.signed_in

如果您想检查用户对象是否已登录,则将其称为:(其中user是用户模型对象)

if user.signed_in?

我不是Devise的作者,但据我所知,Warden / Devise既没有记录谁登录。

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

在routes.rb中使用devise_for :user

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM