(إساءة) استخدام bumped_at لتحقيق فرز يشبه Reddit

أنا أدير منتدى للأخبار والمناقشات السياسية على منصة 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 في المستقبل. أي أفكار؟

هل هناك أي شخص؟

عذرًا على التنبيه.

لا. إذا كنت تريد موقعًا شبيهًا بـ Reddit، فاستخدم أحد نسخ Reddit العديدة المتاحة.

للأسف، لا يوجد شيء مماثل لجودة Discourse في السوق، لذا فإن Discourse هو خياري الوحيد. في الواقع، يقوم Discourse بما يقرب من كل ما هو مطلوب لهذا الغرض، إلا أن ترتيب الصفحة الرئيسية هو العنصر المفقود. لقد رأيت طلبات مماثلة في الماضي (وإن كانت قليلة)، لذا ربما يساعد هذا المزيد من الأشخاص في المستقبل.

إعجابَين (2)

حسناً، هذا طيب جداً منك أن تقول ذلك :wink:

لكننا ملتزمون تماماً بالترتيب الزمني في المحادثات، مع طبقة رقيقة فقط من التتابع. ربما يمكنك النظر في إضافة Solved؟

إعجاب واحد (1)

بديل آخر هو تعيين الصفحة الرئيسية لموقعك إلى /top أو /top/daily.

إعجابَين (2)

هاها. يمكنني القول ذلك لأنني أحصل على استجابة ممتازة من مجتمعي. إن نسخ ريديت الموجودة هناك لا تستحق حتى المحاولة.

أنا لست متأكدًا مما إذا كنت أفهم كيف ترتبط إضافة “المُحلَّ” بهذه المشكلة. هل تؤثر على تاريخ الارتفاع (bump date)؟

هذا له مشاكله الخاصة؛ يجب أن يكون الجدول الزمني يعتمد على التمرير اللانهائي لإبقاء المستخدم منخرطًا. معظم مستخدمينا سيعودون للخلف بدلاً من التنقل داخل الفئات.

أعتقد أن ما سأفعله بعد ذلك هو تجربة ذلك في بيئة التطوير (dev) لمعرفة المشاكل التي سأواجهها إذا قمت بتجاوز bumped_at، ورؤية ما إذا كان بإمكاني تقبلها كبدائل. لم ألجأ إلى الكود بعد، لكنه يبدو وكأنه سيجعل علامة آخر زيارة تتصرف بشكل جنوني، لذا سأضطر إلى كبتها. أيضًا، أعتقد أن “المواضيع الجديدة أو المحدثة” ستتأثر سلبًا، وقد يحتاج ذلك أيضًا إلى بعض التعديلات أو الكبت.

سأشارك تجربتي في هذا السرد في حال كان هناك شخص آخر مهتم. أخبروني إذا كان بإمكانكم التفكير في أي مشاكل أخرى قد تسببها، دون الحاجة للتفكير العميق.

إعجاب واحد (1)