我想跟蹤用戶訪問網站的次數。訪問計數器(用戶模型的一部分)會在30分鐘前訪問時增加。我正在使用Rails和Devise:用Devise在Rails中存儲用戶訪問次數
class ApplicationController < ActionController::Base
before_filter :authenticate_user!
before_filter :update_visits
def update_visits
current_user.increment!(:visits) if !current_user.nil? && current_user.updated_at < 30.minutes.ago
end
end
這會工作的很好,除非我有設計:可記住打開。所以SQL調用的序列來自:authenticate_user!是這樣的:
選擇 「用戶」 * FROM 「用戶」 WHERE 「用戶」, 「電子郵件」= '[email protected]' LIMIT 1
UPDATE 「用戶」 SET 「remember_created_at」=。 '2012年11月21日20 :13:53.011322' 「的updated_at」= '2012年11月21日20:13:53.012791' WHERE 「用戶」, 「ID」= 1
所以訪問。變量永遠不會增加,因爲updated_at被設置爲可記憶調用中的當前時間。如何在認證之後但在可記憶之前將update_visits調用?
謝謝
肯定的,那將是一種方法,一個擴展的解決方案。目前,我只想讓網站上的任何用戶活動觸發「updated_at <30.minutes.ago」檢查。 – Arman
謝謝,我最終使用了warden:manager來解決它。我發佈了我的代碼。 – Arman
這真的很棒。我已經同時啓動了相同的應用程序功能。 –