4

シンプルな Ajax アップデートを使用して、Rails にシンプルなチャット ルーム機能を実装しました。現在、すべてのチャット ルームで、メッセージは特定のユーザーに属しています。ユーザーのリスト (ユーザーの存在など) を表示したいと考えています。方法を提案してください。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

方法を提案してください

4

1 に答える 1

5

どのユーザーがどの部屋にいるかを追跡するために、チャットルームモデルとユーザーモデルの間にHABTM関係を設定できます。また、last_poll_datetime列をUserモデルに追加して、ユーザーが最後にメッセージをポーリングした時間を追跡できます(この部分については1分で詳しく説明します)。

特定の部屋のすべてのユーザーのリストを表示するには、HABTM結合テーブルChatRooms_Usersを使用します。ユーザーが部屋に出入りするたびに、このテーブルに挿入/削除します。

[部屋を離れる]をクリックする代わりにブラウザを閉じるユーザーを期限切れにする場合は、last_poll_datetimeが1分より古いユーザーを検索し、ChatRooms_Users参加テーブルから行を削除するスイーパータスクを毎分実行するように設定します。

于 2009-04-01T13:25:23.503 に答える