2010-02-28 65 views
2

我在rails會話上使用ruby來存儲用戶cookie以保持登錄狀態,因此我不能只在登錄後更新last_seen列。我試圖找出最好的方法來查明用戶是否在最後一天活躍起來。這是我迄今爲止,但我不知道是否有一個更好的辦法:查找登錄用戶的上一次活動時間

class ApplicationController 
    before_filter :update_last_seen 

private 
    def update_last_seen 
    if (DateTime.now - 1.day) < current_user.last_seen 
     current_user.last_seen = DateTime.now 
     current_user.save 
    end 
    end 
end 

這裏的問題是,它會被調用每個請求。有什麼辦法可以避免這種情況?當用戶處於活動狀態時,會話cookie是否會以某種方式更新?

回答

3

不,這正是您應該如何去做的。 before_filter s是跟蹤這類事情的好方法,並且authlogic也是如何實現它的認證系統的。沒有辦法「每天」處理一個請求。如果您使用Authlogic作爲您的身份驗證方法,則它具有內置的上次登錄時間。您可以看到它的一個示例here

+0

好的,謝謝,它看起來像update_last_request_at!可能是Authlogic使用的方法:http://github.com/qoobaa/sms/blob/41e2ee0ea1425b44db29150a940f153aaaac50d7/vendor/gems/authlogic-1.4.1/lib/authlogic/session/timeout.rb。 – TenJack 2010-02-28 15:39:05