Y a-t-il un moyen de forcer Discourse à recalculer tous les sujets principaux dans le profil d’un utilisateur après une importation et/ou un compteur de liens dans un sujet ?
Étrangement, les meilleures réponses fonctionnent correctement.
Y a-t-il un moyen de forcer Discourse à recalculer tous les sujets principaux dans le profil d’un utilisateur après une importation et/ou un compteur de liens dans un sujet ?
Étrangement, les meilleures réponses fonctionnent correctement.
Je pense que les statistiques sont calculées automatiquement toutes les 24 heures. Vous n’avez rien d’autre à faire qu’attendre.
Ce n’est pas le cas, nous avons un test d’importation en cours depuis quelques semaines maintenant. Certaines choses se sont corrigées d’elles-mêmes, d’autres non. Les sujets les plus populaires en sont le meilleur exemple. Le nombre de liens dans les sujets en est un autre. À part cela, tout semble correct sur l’ensemble du site.
Hmm, en examinant le code, nous avons deux tâches — TopRefreshToday (déclenchée toutes les heures) et TopRefreshOlder (déclenchée toutes les 24 heures). Toutes deux appellent des méthodes depuis ici, que vous devriez pouvoir exécuter manuellement depuis la console Rails si nécessaire.
Pouvez-vous vérifier /sidekiq/scheduler pour voir si ces deux tâches ont bien été exécutées ?
Je suppose que toutes les informations pertinentes pour le calcul des sujets principaux ont été importées lors de l’importation ?
Dans ce cas, ces tâches s’exécutent parfaitement. Le problème semble être que le champ like_count de la table topics n’est pas rempli. Existe-t-il une bonne méthode pour recalculer la valeur de ce champ, ou cela doit-il être fait lors de l’importation ? Si cela doit être fait lors de l’importation, comment la calcul doit-il fonctionner ? S’agit-il de la somme de tous les likes de tous les messages dans le sujet ?
J’ai trouvé une solution en utilisant la console Rails qui semble recalculer ce champ :
Topic.visible.map(&:update_statistics)
Le problème avec cette solution est que, pour nos nombres de sujets et de messages, j’estimais qu’il faudrait environ deux mois pour que cette commande s’exécute jusqu’à son terme.
Il semble que vous puissiez régénérer le like_count en utilisant la méthode update_action_counts :
Donc, peut-être quelque chose comme :
Topic.all.find_each do |t|
putc '.'
t.update_action_counts
end
Cela semble avoir très bien fonctionné pour @Ghan et moi, merci beaucoup ![]()