2013-01-02 9 views
5

Giả sử Người dùng dành nhiều thời gian trong trang web.
Làm cách nào để có được thời gian hoạt động cuối cùng của người dùng. Thời gian hoạt động cuối cùng là dấu thời gian cuối cùng của người dùng đã yêu cầu (được truy cập vào trang. Người dùng thậm chí không cần phải cập nhật hoặc tạo bản ghi mới) cho ứng dụng.Làm cách nào để có được thời gian hoạt động cuối cùng của người dùng khi sử dụng Devise?

Một người dùng có thể đã đăng nhập khoảng một giờ trước. Sau đó, anh ta vẫn lướt web trong trang web của tôi. Tôi muốn thời gian yêu cầu cuối cùng mà người dùng đã gửi.

Có thể không?

Devise có current_sign_in_at nhưng không hoạt động lần cuối.

Trả lời

18

Con đường tôi sẽ thực hiện điều này là thêm một cột last_active_at datetime với mô hình tài khoản, sau đó đặt một cái gì đó trong bộ điều khiển của tôi:

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

Đó là làm việc một cách hoàn hảo !! Cảm ơn!! – cat

+0

Tôi đang sử dụng setInterval của ajax để mỗi khi nó tải lại tự động, nó cập nhật ** last_active_at ** này làm cách nào tôi có thể thiết lập ngoại lệ? hành động là 'cộng đồng # làm mới' – cat

+1

Nếu bạn đang sử dụng setInterval để định kỳ gửi một cuộc gọi AJAX trở lại máy chủ và tìm nạp dữ liệu mới, thì bạn không cần phải làm gì cả. Bộ lọc sẽ vẫn chạy trước cộng đồng # làm mới hành động, ngay cả khi nó đến thông qua AJAX, miễn là người dùng có cookie và không có bất kỳ điều gì khác có thể làm gián đoạn phiên của người dùng. –