(Ab)using bumped_at für Reddit-ähnliche Sortierung

Ich betreibe ein Nachrichten- und Politik-Diskussionsforum auf Discourse. Das Problem, das ich feststelle, ist, dass die Standard-Sortierung von Discourse für meinen Anwendungsfall völlig chaotisch ist, da das Alter der Themen eine große Rolle spielt. Für ein Forum wie meines macht eine Reddit-ähnliche Sortierung am meisten Sinn, aber meinem Verständnis nach gibt es keine einfache Möglichkeit, dies zu erreichen.

Ich frage mich, ob es möglich ist, bumped_at zu missbrauchen, um eine Reddit-Sortierung zu erreichen, indem man etwas wie Folgendes macht:

def topic_hotness(created_at, like_count)
   /**
      Diese Funktion übersetzt created_at und like_count
      in ein bumped_at-Datum mithilfe einer mathematischen Formel,
      die der von Reddit ähnelt. Betrachte bumped_at
      als ein Datum, bis zu dem das Thema angesichts seines
      Erstellungsdatums und der Anzahl der Likes in den Top 10 sein muss.
   */
end

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

Wird das funktionieren? Und welche Funktionen könnten dadurch beschädigt werden, was dann behoben werden müsste? Ich habe irgendwo im Discourse-Codebase gesehen, dass eine Ausnahme ausgelöst wird, wenn bumped_at in der Zukunft liegt. Je nach Formel kann die Anwendung dieses Schemas zu bumped_at-Daten in der Zukunft führen. Hast du dazu Gedanken?

Jemand?

Entschuldigung wegen des Aufwühlens.

Nein. Wenn du Reddit willst, nutze einen der vielen Reddit-Klone, die es gibt.

Leider gibt es nirgendwo etwas, das mit der Qualität von Discourse vergleichbar ist, sodass Discourse meine einzige Option ist. Tatsächlich erfüllt Discourse fast alle Anforderungen für diesen Anwendungsfall; es fehlt nur die Sortierung auf der Startseite. Ich habe in der Vergangenheit ähnliche Anfragen gesehen (wenn auch nur wenige), daher wird dies vielleicht in Zukunft mehr Menschen helfen.

Nun, das ist sehr nett von dir, das zu sagen :wink:

Aber wir halten uns strikt an die chronologische Sortierung in Gesprächen und bieten nur eine dünne Schicht an Verschachtelung. Vielleicht schaust du dir das Solved-Plugin an?

Eine Alternative besteht darin, die Startseite Ihrer Website auf /top oder /top/daily festzulegen.

Haha. Das kann ich sagen, weil ich von meiner Community eine sehr gute Resonanz bekomme. Die Reddit-Klone da draußen sind es nicht einmal wert, versucht zu werden.

Ich bin mir nicht sicher, ob ich verstehe, wie das Solved-Plugin mit diesem Problem zusammenhängt. Beeinflusst es das Datum des letzten Beitrags (Bump)?

Das hat auch seine eigenen Probleme: Der Timeline muss ein unendliches Scrollen ermöglichen, um den Nutzer engagiert zu halten. Die meisten meiner Nutzer werden abspringen, anstatt durch die Kategorien zu navigieren.

Ich denke, das, was ich als Nächstes tun werde, ist, es in der Entwicklungsumgebung zu testen, um zu sehen, welche Probleme auftreten, wenn ich bumped_at überschreibe, und zu prüfen, ob ich diese als Kompromisse akzeptieren kann. Ich habe mir den Code noch nicht angesehen, aber es scheint, als würde der Marker für den letzten Besuch verrückt spielen, also muss ich ihn unterdrücken. Außerdem werden meiner Meinung nach die “neuen oder aktualisierten Themen” zerstört, was möglicherweise ebenfalls einige Überschreibungen oder Unterdrückungen erfordert.

Ich werde meine Erfahrungen in diesem Thread teilen, falls sich jemand anderes dafür interessiert. Lasst mich wissen, wenn euch spontan noch weitere Probleme einfallen, die dadurch verursacht werden könnten.