对于自定义触发器,我认为您应该能够窃取Campaigner查询并对其进行调整,使其适用于徽章而不是邀请。
这个是用于拥有5个“徽章108”,并且设置为每日更新。
SELECT u.id user_id, current_timestamp granted_at
FROM users u
WHERE u.id IN (
SELECT ub.user_id
FROM user_badges ub
WHERE ub.badge_id = 108
GROUP BY ub.user_id
HAVING COUNT(*) >= 4
) AND u.active AND u.silenced_till IS NULL AND u.id > 0 AND
(:backfill OR u.id IN (:user_ids) )
我在我的测试站点上对其进行了简短测试,似乎运行正常(我触发了Badge Grant sidekiq作业来加快等待时间)。但希望这至少能为您提供一个起点。![]()
如果您还没有找到,这里还有一些不同的示例可供您参考:Some common badge queries ![]()