مرحباً،
أعمل على إضافة (plugin) تقوم بتصفية جميع المواضيع بناءً على مكان نشر الموضوع ومجموعة المستخدم الذي يشاهد الموضوع. حالة الاستخدام هنا هي وجود فريق دعم في دول مختلفة يتولى معالجة الأسئلة القادمة من مناطقهم الخاصة.
أنا مبتدئ في إنشاء إضافات Discourse ولا أزال أتعلم كيفية القيام بذلك. سيتم التعامل مع موقع الموضوع عبر إضافة المواقع (locations plugin) هنا: Locations Plugin 🌍
وسأضيف المستخدمين الذين يحتاجون إلى هذا العرض المصفى إلى مجموعة يُسمّى اسمها شيئاً مثل NA_queue أو EU_queue.
ستتحقق الإضافة مما إذا كان المستخدم قد سجل دخوله وما إذا كانت المجموعة الأساسية (primary group) محددة. إذا كانت محددة، فستقوم بتصفية جميع المواضيع لتتوافق مع طابور الانتظار (queue) الذي ينتمي إليه المستخدم الحالي.
أفكر أن هذا يمكن إنجازه بشيء مشابه للكود التالي:
after_initialize do
require_dependency ‘topic_query’
# إذا كان المستخدم مسجلاً للدخول وتم تعيين المجموعة الأساسية
# نحتاج إلى الحصول على المجموعة الأساسية للمستخدم
# نحتاج إلى الحصول على موقع الموضوع
TopicQuery.add_custom_filter(:location) do |results, topic_query|
filter = "SOME SQL QUERY HERE"
results = results.joins("{filter}")
results
end
هل هذه طريقة جيدة لحل مشكلتي؟
أيضاً، هل لدى أي شخص اقتراحات حول ما يجب أن يكون عليه استعلام SQL أو كيفية الحصول على هاتين المعلومتين المشار إليهما في التعليقات؟