문제

간단한 AJAX 업데이트를 사용하여 레일에서 간단한 대화방 기능을 구현했습니다. 이제 모든 대화방에서 메시지는 특정 사용자에게 속합니다. 사용자 목록 (사용자 존재와 같은)을 보여주고 싶습니다. 방법을 제안하십시오. 우리는 Jabber, XMPP 등을 사용하지 않습니다.

채팅방 모델은 다음과 같습니다.

class ChatRoom < ActiveRecord::Base
  validates_presence_of :title

  has_many :messages,:foreign_key=> "chat_room_id"
  has_many :stories,:foreign_key=>"chat_room_id"
  has_many :topics,:foreign_key=>"chat_room_id"


end

메시지는 모든 사용자의 채팅입니다.

메시지 모델은 다음과 같습니다.

class Message < ActiveRecord::Base
  belongs_to :user
end

사용자 모델은 다음과 같습니다.

class User < ActiveRecord::Base
  acts_as_authentic :crypto_provider => Authlogic::CryptoProviders::BCrypt
  validates_presence_of :nick
  validates_uniqueness_of :nick
  has_many :questions
  end

방법을 제안하십시오

도움이 되었습니까?

해결책

어떤 사용자가 어떤 방에 있는지 추적하기 위해 채팅방과 사용자 모델 사이의 HABTM 관계를 설정할 수 있습니다. 또한 사용자 모델에 last_poll_dateTime 열을 추가하여 사용자가 메시지를 위해 마지막으로 여론 조사를 추적 할 수 있습니다 (1 분 안에이 부분에 대해 자세히 설명).

주어진 방에있는 모든 사용자의 목록을 표시하려면 HABTM 조인 테이블, chatrooms_users를 사용하십시오. 사용자가 방을 가입하거나 떠날 때 마다이 테이블에서 삽입/삭제됩니다.

'방으로 떠나기'를 클릭하는 대신 브라우저를 닫는 사용자를 만료하려면 1 분 이상이 지난 1 분 이상 사용자를 찾는 사용자를 찾는 순간마다 스위퍼 작업을 설정하고 Chatrooms_users가 테이블로 가입하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top