وجود العضو في غرفة دردشة (دردشة الحصول على تحديث بالاقتراع بسيط)
-
22-08-2019 - |
سؤال
وقمنا بتنفيذ ميزة غرفة دردشة بسيطة في القضبان باستخدام التحديثات اياكس بسيطة. الآن في كل غرفة دردشة ينتمي رسالة إلى مستخدم معين. نريد أن نظهر قائمة المستخدمين (شيء من هذا القبيل وجود المستخدم). يرجى اقتراح السبل. نحن لا تستخدم جابر، 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 إلى النموذج المستخدم لتتبع آخر مرة المستخدم باستقصاء الرسائل (أكثر على هذا الجزء في دقيقة واحدة).
لعرض قائمة جميع المستخدمين في غرفة معينة، استخدم HABTM بك انضمام الجدول، ChatRooms_Users. عليك أن تكون إدراج / حذف من هذا الجدول عندما ينضم أي مستخدم أو يترك الغرفة.
إذا كنت تريد أن تنتهي المستخدمين الذين إغلاق برامج التصفح الخاصة بهم بدلا من النقر فوق "غرفة الإجازات، وإعداد مهمة كاسحة لتشغيل كل دقيقة التي تبدو للمستخدمين مع last_poll_datetime دقيقة مضى عليها أكثر من واحد وإزالة صفوفهم من ChatRooms_Users انضمام الجدول.