Discourse帖子投票

我认为也是这样。:slight_smile: 但Sam坚持认为这是网站的偏好设置:

看起来还没有关于这个的徽章。

如果你有具体的徽章标准,想要创建的话,应该为每一个在 Data & reporting 主题下提出。:+1:

我认为可以举几个例子:

在一个投票帖回复中获得10票

SELECT p.user_id, p.created_at AS granted_at, p.id AS post_id
FROM post_voting_votes pvv
  JOIN posts p ON p.id = pvv.votable_id
WHERE pvv.direction = 'up'
  AND p.post_number <> 1
  AND (:backfill OR p.id IN (:post_ids))
GROUP BY p.user_id, p.id
HAVING COUNT(*) >=10

或者一个更细致的例子,考虑“赞成票 - 反对票”的总数:

WITH vote_totals AS (

SELECT
    p.user_id,
    p.id AS post_id,
    p.created_at AS granted_at,
    (COUNT(*) FILTER (WHERE pvv.direction = 'up') - COUNT(*) FILTER (WHERE pvv.direction = 'down')) AS total
FROM post_voting_votes pvv
  JOIN posts p ON p.id = pvv.votable_id
WHERE p.post_number <> 1
GROUP BY 1, 2

)

SELECT *
FROM vote_totals
WHERE total >= 10
  AND (:backfill OR post_id IN (:post_ids))

:red_exclamation_mark: 这些需要进一步测试,以确保它们按预期工作。:slight_smile:

不过要考虑的一点是,总数是动态的,今天的“10”明天可能会变成“5”,如果添加了更多的反对票(对于第二个例子)。如果徽章只是基于赞成票,就像第一个例子一样,那么你可能获得了10票,但当计算了反对票后,UI只显示5票。

5 个赞