Il conteggio non letti mostra Non letti (14) ma /unread è vuoto

Ok, questo script di Rails agirà come un “segna tutto come letto” globale e forzerà il conteggio dei non letti a 0 per tutti gli utenti; quindi, purtroppo, cancellerà sia i conteggi legittimi di non letti che eventuali non letti fantasma. Possiamo farlo con un comando SQL in Rails. Ma nota che non risolve il bug alla radice. Inoltre, è un’ottima idea se hai un backup recente a portata di mano, ma l’ho testato sul mio forum di sviluppo e ha funzionato.

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

incolla l’intero blocco seguente e premi Invio

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) -- Tracking, Watching, Watching First Post
SQL

# esegui l'aggiornamento
result = ActiveRecord::Base.connection.execute(sql)
puts "Puliti con successo #{result.cmd_tuples} argomenti non letti a livello di sito."

# forza i browser client a cancellare il loro stato in cache e sincronizzarsi con il database
MessageBus.publish("/topic-tracking-state", { clear: true })

gli utenti potrebbero dover eseguire un aggiornamento forzato per vedere lo stato dei non letti cancellato.

3 Mi Piace