Consultas de medalhas usando a tabela "badge_posts" não são concedidas para categorias não públicas

Um de nossos usuários tinha 5 emblemas de “Resposta Legal” (curtiu 100 posts e deu 100 curtidas). Depois, movemos alguns tópicos para uma categoria privada, e agora ele tem apenas 3 emblemas. Parece que a consulta de emblemas não está contando as curtidas dadas ou recebidas nos tópicos movidos, talvez porque foram movidos ou porque agora são privados.

Ao depurar isso, copiei a consulta de emblemas para o 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

A consulta acima retorna apenas 3 resultados para o usuário, mas deveria ser 5. Percebi que ela usa a tabela “badge_posts”. Não consigo encontrar a tabela badge_posts na visualização em árvore do Data Explorer. Então, alterei “badge_posts” para “posts”, e aí ela retorna 5, como esperado.

De onde vem a tabela “badge_posts” e a consulta de emblemas não deveria usar a tabela “posts” em vez disso?

1 curtida

That table confused me for a long time. It is defined here: discourse/lib/badge_posts_view_manager.rb at main · discourse/discourse · GitHub. It is a postgres view. My understanding of a view is that it is a name that is assigned to a query.

Posts in the badge_posts view are visible posts that are not in read restricted categories. When you moved your topics to a private category, you removed their posts from the badge_posts view.

6 curtidas

Our private category is not all that private- you just have to accept a policy to gain access. So I would like to include posts from that category. I guess I would need to create a custom badge that looks similar to Nice Reply (and Good Reply and Great Reply), but use posts instead of badge_posts.

2 curtidas

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