2009-10-13 5 views
4

내 응용 프로그램 사용자를위한 간단한받은 편지함 시스템을 구현하려고합니다. 많은 포럼 시스템에서와 마찬가지로 서로에게 기본 메시지를 보낼 수 있습니다.MessageClicks 테이블에서 읽은/읽지 않은 사용자 메시지를 추적 하시겠습니까?

User has_many :messages의 경우 마지막으로 읽은 후 읽지 않은 메시지를 추적하고 사용자에게 알리는 방법은 무엇입니까?

나는 Messages 화면으로 링크를 클릭을 생각하고는 별도의 테이블 (MessagesClicks)에 기록 될 필요가있다.

여기에 가장 적합한 방법이 있습니까? last_clicked 또는 updated_at 필드에 따라 -

그래서 그때 나는 새 메시지가 해당 링크를 클릭 한 마지막 시간 이후 도착했는지 확인하기 위해 MessagesClicks 테이블을 확인합니다.

답변

6

기본값 null 인 메시지 자체에서 메시지를 읽은 시간을 추적합니다.

사용자가 dateRead 값이 null 인 메시지가있는 경우 읽지 않은 메시지가 있습니다.

메시지 화면에서 사용자에게 메시지를 표시 할 때 메시지의 dateRead 속성을 null에서 now로 업데이트하십시오.

+1

메시지가 각 사용자에게 고유하지 않은 경우 어떻게합니까? – user730569

+1

@ user730569이 경우 user_id 및 message_id (그리고 아마도 타임 스탬프 또는 기타 흥미로운 정보)를 포함하는 참조 테이블을 추가하고 거기에 그 정보를 저장할 수 있습니다. – tosh

+0

여러 참여자가있는 대화에는 작동하지 않습니다. 이를 위해 다른 연관 모델, 예를 들어'ReadReceipt'를 만들어야합니다. – Sachin

관련 문제