Contagem de não lidos mostra Não lidos (14) mas /unread está vazio

ok, este script do Rails funcionará como um “marcar tudo como lido” global e forçará a contagem de não lidos de volta para 0 para todos os usuários, então, infelizmente, isso apagará qualquer contagem legítima de não lidos, além de quaisquer não lidos fantasma. Podemos fazer isso com um comando SQL no Rails. Mas note que isso não corrige o bug raiz. Além disso, boa ideia se você tiver um backup recente à mão, mas eu testei isso no meu fórum de desenvolvimento e funcionou.

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

cole todo o bloco a seguir e pressione 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) -- Acompanhando, Assistindo, Assistindo Primeira Postagem
SQL

# executar a atualização
result = ActiveRecord::Base.connection.execute(sql)
puts "Limpeza bem-sucedida de #{result.cmd_tuples} tópicos não lidos em todo o site."

# forçar os navegadores do cliente a descartar seu estado em cache e sincronizar com o banco de dados
MessageBus.publish("/topic-tracking-state", { clear: true })

os usuários podem precisar atualizar forçadamente para ver o estado não lido limpo.

3 curtidas