أنا أدير منتدى للأخبار والمناقشات السياسية على منصة Discourse. المشكلة التي أواجهها هي أن الترتيب الافتراضي الذي توفره Discourse يؤدي إلى فوضى كاملة في حالتي الاستخدام، لأن عمر الموضوع يهم جدًا. بالنسبة لمنتدى مثل منتدى، فإن الترتيب على estilo Reddit هو الأنسب، لكن فهمي هو أنه لا توجد طريقة مباشرة لتحقيق ذلك.
أتساءل عما إذا كان من الممكن (إساءة) استخدام حقل bumped_at لتحقيق ترتيب Reddit عن طريق القيام بشيء مثل:
def topic_hotness(created_at, like_count)
/**
هذه الدالة تحول created_at و like_count
إلى تاريخ bumped_at باستخدام صيغة رياضية
مشابهة لتلك المستخدمة من قبل Reddit. اعتبر bumped_at
تاريخًا حتى نحتاج إلى أن يكون الموضوع ضمن العشرة الأوائل
بناءً على تاريخ إنشائه وعدد الإعجابات.
*/
end
add_model_callback(Topic, :before_save) do
self.bumped_at = topic_hotness(self.created_at, self.like_count)
end
هل هذا سيعمل؟ وما هي الميزات التي قد يتسبب في كسرها والتي ستحتاج إلى معالجة؟ رأيت في مكان ما في قاعدة كود Discourse أنه يتم إلقاء استثناء إذا كان bumped_at في المستقبل. اعتمادًا على الصيغة، يمكن أن يؤدي استخدام هذا المخطط إلى تواريخ bumped_at في المستقبل. أي أفكار؟
للأسف، لا يوجد شيء مماثل لجودة Discourse في السوق، لذا فإن Discourse هو خياري الوحيد. في الواقع، يقوم Discourse بما يقرب من كل ما هو مطلوب لهذا الغرض، إلا أن ترتيب الصفحة الرئيسية هو العنصر المفقود. لقد رأيت طلبات مماثلة في الماضي (وإن كانت قليلة)، لذا ربما يساعد هذا المزيد من الأشخاص في المستقبل.
هاها. يمكنني القول ذلك لأنني أحصل على استجابة ممتازة من مجتمعي. إن نسخ ريديت الموجودة هناك لا تستحق حتى المحاولة.
أنا لست متأكدًا مما إذا كنت أفهم كيف ترتبط إضافة “المُحلَّ” بهذه المشكلة. هل تؤثر على تاريخ الارتفاع (bump date)؟
هذا له مشاكله الخاصة؛ يجب أن يكون الجدول الزمني يعتمد على التمرير اللانهائي لإبقاء المستخدم منخرطًا. معظم مستخدمينا سيعودون للخلف بدلاً من التنقل داخل الفئات.
أعتقد أن ما سأفعله بعد ذلك هو تجربة ذلك في بيئة التطوير (dev) لمعرفة المشاكل التي سأواجهها إذا قمت بتجاوز bumped_at، ورؤية ما إذا كان بإمكاني تقبلها كبدائل. لم ألجأ إلى الكود بعد، لكنه يبدو وكأنه سيجعل علامة آخر زيارة تتصرف بشكل جنوني، لذا سأضطر إلى كبتها. أيضًا، أعتقد أن “المواضيع الجديدة أو المحدثة” ستتأثر سلبًا، وقد يحتاج ذلك أيضًا إلى بعض التعديلات أو الكبت.
سأشارك تجربتي في هذا السرد في حال كان هناك شخص آخر مهتم. أخبروني إذا كان بإمكانكم التفكير في أي مشاكل أخرى قد تسببها، دون الحاجة للتفكير العميق.