2012-07-26 39 views
1

一個新的會話我有一個抓住用戶的Facebook朋友後臺作業。檢測使用Rails

我想這個後臺作業的每一個登錄的用戶開始新的瀏覽器會話時觸發。我不確定關於什麼是Rails的「新」會話的技術定義,但理想情況下,只要用戶在一段時間不活動後訪問網站(例如,自上次訪問以來> 30分鐘)就會觸發該技術。

我怎樣才能在Rails的檢測這樣一個新的會話?感謝任何幫助。

回答

0

如果你使用的設計,你在users表中的列last_sign_in_at。它可以被您的後臺作業用來檢查用戶是否最近訪問過您的網站。

3

這是我所能做的來解決這個問題最好的。我正在使用會話變量。我的application_controller中有一個before_filter方法。似乎工作得很好,但我注意到有些特定的事情(例如Pusher)會重置會話變量,因此如果使用此解決方案進行監控,那麼您肯定會進行監視。如果有人有一個更好的解決方案,我是耳朵。

def call_set_facebook_friends 
    if session[:new_session] == nil && signed_in? 
    current_user.background_set_facebook_friends 
    session[:new_session] = true 
    end 
end 
+0

感謝所以對於這種原始的解決方案,它的工作。我非常驚訝,rack/rails會話存儲沒有這個鉤子,它非常標準的東西,就像在Java中一樣,有一個事件回調/掛鉤用於應用程序啓動,會話啓動等。像warden/devise這樣的安全框架可以掛鉤登錄後,但是如果你想確保你的代碼在會話的第一個請求上運行(如果甚至沒有登錄)似乎並不是一個標準的方法來做到這一點。我們嘗試了一個擴展cookie_store的自定義會話存儲,但不清楚如何做,get_session被調用並且sid已經設置 – bjm88 2015-10-21 19:48:32