本指南介绍如何通过 Discourse 控制台颁发非自定义徽章。
所需用户级别:系统管理员
需要控制台访问权限
在特定场景下,您可能需要手动从控制台向用户颁发默认的 Discourse 徽章。例如,由于用户本地时间与服务器 UTC 时间之间的时区差异,用户可能因连续 10 天访问论坛而未能获得“狂热者(Enthusiast)”徽章。
本文档提供了通过 Rails 控制台手动颁发非自定义徽章的分步指南,以确保这些徽章不会被系统自动撤销。
检查可自动撤销的徽章
在颁发徽章之前,请确保该徽章不会被系统自动撤销。在 Rails 控制台中运行以下命令以获取此类徽章的列表:
Badge.where(auto_revoke: false).pluck(:name)
该命令将显示非自动撤销徽章的列表,包括:
- “首次标记(First Flag)”
- “感谢(Thank You)”
- “回馈(Gives Back)”
- “共情(Empathetic)”
- “出于爱(Out of Love)”
- “更高的爱(Higher Love)”
- “狂热之爱(Crazy in Love)”
- “鉴赏家(Aficionado)”
- “奉献者(Devotee)”
- “狂热者(Enthusiast)”
- “读者(Reader)”
- “周年纪念(Anniversary)”
- “受赏识(Appreciated)”
- “受尊重(Respected)”
- “受钦佩(Admired)”
颁发徽章
要从列表中授予徽章,请按照以下步骤操作:
-
通过用户名查找用户:
运行以下命令,将
enthusiastic_user替换为实际用户名:user = User.find_by(username: 'enthusiastic_user') -
按名称查找徽章:
例如,要查找“狂热者(Enthusiast)”徽章,请使用:
badge = Badge.find_by(name: "Enthusiast") -
向用户授予徽章:
最后,使用以下命令向用户颁发徽章:
BadgeGranter.grant(badge, user)