对于一些存在“消息幽灵”的群组,这不起作用。可以通过以下查询来识别这些群组(前提是群组互动设置中已限制消息传递):
SELECT id, name, has_messages, messageable_level
From groups
Where messageable_level < 10
AND messageable_level <> 3
AND has_messages = true
ORDER by id
你也可以通过修改 groups 表来强制重置(当然是在 Rails 控制台中,请先备份!)。
Group.where(id: XXX).update_all(has_messages: false)
如果这不起作用或恢复了,你可能还需要清理 topic_groups 和 topic_allowed_groups 表:
TopicGroup.where(group_id: XXX).destroy_all
TopicAllowedGroup.where(group_id: XXX).destroy_all