Utilisation abusive de `bumped_at` pour obtenir un tri similaire à Reddit

Je gère un forum de discussion d’actualités et de politique sur Discourse. Le problème que je rencontre est que le tri par défaut de Discourse entraîne un chaos total pour mon cas d’usage, car l’ancienneté des sujets est très importante. Pour un forum comme le mien, un tri à la manière de Reddit serait le plus logique, mais j’ai compris qu’il n’existe pas de méthode simple pour y parvenir.

Je me demande s’il est possible d’(ab)user de bumped_at pour réaliser un tri à la manière de Reddit en faisant quelque chose comme ceci :

def topic_hotness(created_at, like_count)
   /**
      Cette fonction traduit created_at et like_count
      en une date bumped_at en utilisant une formule mathématique
      similaire à celle utilisée par Reddit. Considérez bumped_at
      comme une date jusqu'à laquelle nous voulons que le sujet reste
      dans le top 10, compte tenu de sa date de création et du nombre de likes.
   */
end

add_model_callback(Topic, :before_save) do
   self.bumped_at = topic_hotness(self.created_at, self.like_count)
end

Est-ce que cela va fonctionner ? Et quelles fonctionnalités pourraient être cassées, nécessitant des correctifs ? J’ai vu quelque part dans la base de code de Discourse qu’une exception est levée si bumped_at est dans le futur. Selon la formule, l’utilisation de ce schéma peut entraîner des dates bumped_at dans le futur. Qu’en pensez-vous ?

Quelqu’un ?

Désolé pour le rappel.

Non. Utilisez l’un des nombreux clones de Reddit disponibles si vous voulez Reddit.

Malheureusement, il n’y a RIEN de comparable à la qualité de Discourse sur le marché, donc Discourse est ma seule option. En fait, Discourse fait presque tout ce qui est nécessaire pour ce cas d’usage ; c’est uniquement le tri de la page d’accueil qui manque. J’ai vu des demandes similaires dans le passé (bien que peu nombreuses), alors peut-être que cela aidera plus de personnes à l’avenir.

2 « J'aime »

Eh bien, c’est très gentil à vous de le dire :wink:

Mais nous sommes strictement engagés dans un tri chronologique des conversations, avec seulement une fine couche de fil de discussion. Vous pourriez jeter un coup d’œil à le plugin Solved, peut-être ?

1 « J'aime »

Une autre option consiste à définir la page d’accueil de votre site sur /top ou /top/daily.

2 « J'aime »

Haha. Je peux le dire car je reçois une très bonne réponse de ma communauté. Les clones de Reddit qui existent ne valent même pas la peine d’être essayés.

Je ne suis pas sûr de comprendre en quoi le plugin Solved est lié à ce problème. Est-ce qu’il modifie la date de remontée ?

Cela pose ses propres problèmes : la chronologie doit être un défilement infini pour maintenir l’engagement des utilisateurs. La plupart de mes utilisateurs partiront plutôt que de naviguer dans les catégories.

Je pense que ce que je vais faire ensuite, c’est expérimenter en environnement de développement pour voir quels problèmes je rencontrerai si je remplace bumped_at, et voir si je peux accepter ces compromis. Je n’ai pas encore regardé le code, mais il semble que le marqueur de dernière visite va devenir fou, donc je devrai le désactiver. De plus, je pense que la section « nouveaux ou mis à jour sujets » sera compromise, ce qui pourrait également nécessiter des remplacements ou des désactivations.

Je partagerai mon expérience sur ce fil au cas où quelqu’un d’autre serait intéressé. Dites-moi si vous pouvez penser à d’autres problèmes que cela pourrait causer, même de tête.

1 « J'aime »