2010-11-25 2 views
5

나는 주어진 사용자에 대한 온라인 상태를 추가하고 싶은 앱을 만들고있다.레일즈 3 + 개발자 : user_signed_in? 데이터베이스에있는 다른 사용자에게?

Devise에는 user_signed_in 메서드가 있습니까? 앱을 사용하는 사용자가 로그인했는지 여부를 확인하기 위해 내장되어 있습니다. 하지만이 같은 다른 사용자를 위해 사용하려고하면 :

user_signed_in?(user) 

user.user_signed_in? 

분명히 정의되지 않은 메서드 오류가 발생합니다.

Devise에는이 방법이 있습니까? 아니면 직접 작성해야합니까? 하나의 접근 방식은 주어진 사용자의 온라인 상태를 사용자 모델에 저장하는 것이 었습니다. 무엇이 최선의 해결책입니까?

답변

1

나는 고안의 저자 아니지만, 내가 소장/고안의 말할 둘에 로그인하는 사용자를 추적 할 수 있는지부터.

사용자 테이블에 is_online 열을 갖는 문제는 그것이 그 누가 웹 사이트에서 활동하는지 알기가 어렵습니다. last_seen이라는 사용자 모델에 날짜 - 시간으로 열을 추가하고 사용자가 페이지를 요청할 때마다이를 Devise로 업데이트합니다. 그런 다음 User.online_count 메소드를 쉽게 추가하거나 지난 5 분 동안 사용자가 웹 사이트에서 본 적이 있는지 확인할 수 있습니다.

+0

(사용자는 사용자 모델 개체 임) 및 오프라인 상태. 왜냐하면 나는 일정 기간 동안 활동하지 않았을 때 사용자를 "오프라인"이라고 선언하는 생각을 좋아하지 않기 때문입니다. – Max

+0

나는 데이터베이스에 모든 것을 저장해야한다고 생각합니다. – Max

+0

필자는 이것을 테스트하지는 않았지만 before_filter를 사용하여이 작업을 수행 할 수 있다고 생각했습니다. – voxobscuro

-3

routes.rb에서 devise_for :user을 사용하십시오.

18

내 응용 프로그램에서 Devise를 사용하고 처음으로 작업을 시작했을 때와 동일한 문제가 발생했습니다. 단순히 도우미 메서드를 잘못 사용하고있는 것입니다. 현재 사용자가 세션을 가지고 있고 로그인되어 있는지 확인하려는 경우, 당신은 같은 도우미를 사용

if !current_user.nil? && current_user.signed_in 

당신 경우 : 같은 문 본질적

if user_signed_in? 

인 사용자 개체가 로그인하면 '당신이 전화를 확인하고 싶습니다 : 나는 또한 멀리, 온라인을함으로써 두 가지를 결합 할 수

if user.signed_in?