Gibt es eine Möglichkeit, Discourse dazu zu bringen, alle Top-Themen im Benutzerprofil nach einem Import und/oder einem Linkzähler in einem Thema neu zu berechnen?\n\nSeltsamerweise funktioniert Top Replies korrekt.
Ich glaube, die Statistiken werden automatisch alle 24 Stunden berechnet. Du musst nichts tun, außer warten.
Das scheint nicht der Fall zu sein. Wir haben seit einigen Wochen einen Importtest im Einsatz. Einige Dinge haben sich selbst korrigiert, andere nicht. Top-Themen sind das deutlichste Beispiel dafür. Auch die Anzahl der Links in den Themen ist betroffen. Ansonsten scheint alles auf der gesamten Website korrekt zu sein.
Hmm, wenn wir uns den Code ansehen, haben wir zwei Jobs — TopRefreshToday (wird jede Stunde ausgeführt) und TopRefreshOlder (wird alle 24 Stunden ausgeführt). Beide rufen Methoden von hier auf, die du bei Bedarf manuell über die Rails-Konsole ausführen kannst.
Kannst du /sidekiq/scheduler prüfen, um zu sehen, ob die beiden Jobs ausgeführt wurden?
Ich gehe davon aus, dass alle relevanten Informationen zur Berechnung der Top-Themen mit dem Import übernommen wurden?
In diesem Fall laufen diese Jobs einwandfrei. Das Problem scheint darin zu bestehen, dass das Feld like_count in der Tabelle topics nicht befüllt ist. Gibt es eine gute Möglichkeit, den Wert für dieses Feld neu zu berechnen, oder muss dies während des Imports erfolgen? Falls es während des Imports erfolgen muss: Wie soll die Berechnung dafür funktionieren? Handelt es sich dabei um eine Summe aller Likes aus allen Beiträgen im Topic?
Ich habe über die Rails-Konsole einen Weg gefunden, der dieses Feld neu zu berechnen scheint:
Topic.visible.map(&:update_statistics)
Das Problem bei dieser Lösung ist, dass ich bei unserer Anzahl an Topics und Beiträgen schätze, dass dieser Befehl etwa zwei Monate in Anspruch nehmen würde, bis er abgeschlossen ist.
Es sieht so aus, als könnten Sie die like_count mit der Methode update_action_counts neu generieren:
Also vielleicht so etwas wie:
Topic.all.find_each do |t|
putc '.'
t.update_action_counts
end
Das scheint für @Ghan und mich wirklich gut funktioniert zu haben, vielen Dank dafür ![]()