「badge_posts」テーブルを使用したバッジ照会は、非公開カテゴリでは付与されません

あるユーザーは「Nice Reply」バッジを5つ保有していました(100件の投稿に「いいね」をつけ、100件の「いいね」を受け取った状態)。その後、いくつかのトピックを非公開カテゴリに移動させたところ、そのユーザーのバッジ数が3つに減ってしまいました。移動されたトピックでの「いいね」の授受がバッジのクエリでカウントされていないようです。移動による影響か、あるいは非公開化による影響かは不明です。

この問題のデバッグ中に、バッジのクエリをData Explorerにコピーしました。

select p.user_id, p.id post_id, current_timestamp granted_at
from badge_posts p
where p.post_number > 1
and p.like_count >= 10

上記のクエリはそのユーザーに対して3件の結果しか返しませんでしたが、本来は5件であるべきです。このクエリが「badge_posts」というテーブルを使用していることに気づきました。Data Explorerのツリービューで「badge_posts」テーブルが見つかりませんでした。そこで「badge_posts」を「posts」に変更して実行したところ、期待通り5件の結果が返ってきました。

「badge_posts」テーブルはどこから来るものなのでしょうか?また、バッジのクエリは本来「posts」テーブルを使用すべきではないでしょうか?

「いいね!」 1

そのテーブルには私も長い間混乱しました。これはここで定義されています:discourse/lib/badge_posts_view_manager.rb at main · discourse/discourse · GitHub PostgreSQL のビュー です。私の理解では、ビューとはクエリに割り当てられた名前です。

badge_posts ビューに含まれる投稿は、閲覧制限付きのカテゴリに属さない表示可能な投稿です。トピックをプライベートカテゴリに移動すると、それらの投稿は badge_posts ビューから除外されます。

「いいね!」 6

非公開カテゴリは、実際には完全に非公開ではありません。アクセスするにはポリシーに同意する必要があります。そのため、そのカテゴリの投稿を含めたいと考えています。Nice Reply(および Good Reply、Great Reply)と似た外観のカスタムバッジを作成する必要があると思いますが、badge_posts ではなく posts を使用する必要があります。

「いいね!」 2

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.