簡體   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