2013-01-02 4 views
5

ユーザーがWebサイトで長い時間を費やしているとします。
ユーザーの最終有効時間を取得する方法を教えてください。 最終有効時間は、アプリケーションに要求した(ユーザーがページをアクセスしても、新しいレコードを更新または作成する必要はない)ユーザーの最後のタイムスタンプを意味します。Deviseを使用しているときに、ユーザーの最後の有効時間を取得するにはどうすればよいですか?

ユーザーが約1時間前にサインインした可能性があります。それから彼は私のウェブサイトでまだウェブサーフィンをしています。 ユーザーが最後に要求した時刻が必要です。

可能ですか?

Deviseはcurrent_sign_in_atですが、最後のアクティブ時間はありません。私はこれを実装し

答えて

18

の方法は、その後、私のコントローラで何かを入れ、Userモデルにlast_active_at日時列を追加することです:それは完全に働いている

class ApplicationController 
    before_filter :record_user_activity 

    private 

    def record_user_activity 
    if current_user 
     current_user.touch :last_active_at 
    end 
    end 
end 
+0

!!ありがとう!! – cat

+0

私はajaxのsetIntervalを使用していますので、自動的にリロードするたびに** last_active_at **が更新されます**どうすれば例外を設定できますか?アクションは 'community#refresh' – cat

+1

setIntervalを使ってAJAXコールをサーバーに定期的に送り、新しいデータをフェッチする場合は、何もする必要はありません。ユーザーのクッキーがオンで、ユーザーのセッションを中断させる可能性のあるものがない限り、フィルタはAJAXを介して入ってきても、コミュニティ#refreshアクションの前に実行されます。 –

関連する問題