2012-07-26 2 views
1

나는 사용자의 페이스 북 친구를 움켜 잡는 배경 직업이있다.레일스에서 ​​새로운 세션 감지하기

로그인 한 사용자가 새 브라우저 세션을 시작할 때마다이 백그라운드 작업을 시작하고 싶습니다. 나는 Rails를위한 "새로운"세션을 구성하는 기술적 정의에 대해서는 확신하지 못하지만, 사용자가 일정 기간 활동하지 않으면 (예 : 마지막 방문 이후 30 분을 초과하는) 사용자가 사이트를 조회 할 때마다 실행되는 것이 이상적입니다.

레일스에서 ​​새 세션을 어떻게 검색 할 수 있습니까? 어떤 도움을 주시면 감사하겠습니다.

답변

0

Devise를 사용하는 경우 테이블에 last_sign_in_at 열이 있습니다. 백그라운드 작업에서 사용자가 최근에 귀하의 사이트를 방문했는지 확인하는 데 사용할 수 있습니다.

3

내가 해결할 수있는 최선의 방법입니다. 세션 변수를 사용하고 있습니다. before_filter를 사용하여 application_controller에이 메서드가 있습니다. 잘 작동하는 것으로 보였지만 세션 변수를 재설정하는 특정 항목 (예 : 푸셔)이 있으므로이 솔루션을 사용하면 명확하게 모니터링 할 수 있습니다. 누군가가 마음에 더 나은 해결책을 가지고 있다면, 나는 모두 귀입니다.

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

이 원시 솔루션에 감사드립니다. 나는 매우 놀랐다 랙/레일 세션 저장소에 대한 갈고리가 없어, 자바처럼 거기에 이벤트 콜백/응용 프로그램 시작, 세션 시작 등에 대한 후크가 있습니다. 그러나 서명 한 후에는 세션의 첫 번째 요청에서 코드가 실행되도록하려는 경우 (로그인하지 않은 경우) 표준 방법으로 보이지 않습니다. 우리는 cookie_store를 확장 한 사용자 정의 세션 저장소를 가지고 있지만 그 방법을 분명히하지 못했습니다. get_session이 호출되었고 sid가 이미 설정되었습니다. – bjm88