未読数が「未読 (14)」と表示されるが、/unread は空です

はい、この Rails スクリプトは「すべて既読にする」グローバル機能として機能し、全ユーザーunread(未読)カウントを強制的に 0 に戻します。そのため、残念ながら、実際の未読数も幻影の未読数もすべてクリアされてしまいます。これは Rails 内で SQL コマンドを実行することで可能です。ただし、根本的なバグを修正するものではありません。また、最近のバックアップがある場合は良いアイデアですが、私は開発用フォーラムでこれをテストし、正常に動作することを確認しました。

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

以下のブロック全体を貼り付けて 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) -- Tracking, Watching, Watching First Post
SQL

# 更新を実行
result = ActiveRecord::Base.connection.execute(sql)
puts "サイト全体で #{result.cmd_tuples} 件の未読トピックを正常にクリアしました。"

# クライアントブラウザがキャッシュされた状態を破棄し、データベースと同期するように強制
MessageBus.publish("/topic-tracking-state", { clear: true })

ユーザーは、クリアされた unread 状態を確認するために、ハードリフレッシュを行う必要がある場合があります。

「いいね!」 3