El contador de no leídos muestra No leídos (14) pero /unread está vacío

ok, este script de Rails actuará como un “marcar todo como leído” global y forzará el conteo de no_leídos de vuelta a 0 para todos los usuarios, por lo que, lamentablemente, borrará cualquier conteo legítimo de no leídos además de cualquier no leído fantasma. Podemos hacer esto con un comando SQL en Rails. Pero ten en cuenta que no soluciona el error raíz. Además, buena idea si tienes una copia de seguridad reciente a mano, pero lo probé en mi foro de desarrollo y funcionó.

cd /var/discourse
./launcher enter app
rails c

pega todo el siguiente bloque y presiona Enter

sql = <<~SQL
  UPDATE topic_users
  SET last_read_post_number = topics.highest_post_number
  FROM topics
  WHERE topics.id = topic_users.topic_id
    AND COALESCE(topic_users.last_read_post_number, 0) < topics.highest_post_number
    AND topic_users.notification_level IN (2, 3, 4) -- Rastreo, Observando, Observando primer mensaje
SQL

# ejecutar la actualización
result = ActiveRecord::Base.connection.execute(sql)
puts "Se limpiaron correctamente #{result.cmd_tuples} temas no leídos en todo el sitio."

# forzar a los navegadores cliente a descartar su estado en caché y sincronizarse con la base de datos
MessageBus.publish("/topic-tracking-state", { clear: true })

los usuarios pueden tener que hacer una recarga forzada para ver el estado de no_leídos limpiado.

3 Me gusta