你好,
我正在开发一个插件,该插件根据主题发布的位置以及查看主题的用户所属的群组来过滤所有主题。其应用场景是:不同国家的客服团队处理来自各自地区的问题。
我是一名 Discourse 插件开发新手,还在学习如何实现这一功能。主题位置将由 Locations 插件处理,详见:Locations Plugin 🌍
我还会将需要此过滤视图的用户添加到一个群组,例如命名为 NA_queue 或 EU_queue。
该插件将检查用户是否已登录,以及是否设置了主群组。如果已设置,它将过滤所有主题,使其仅匹配当前用户所属的队列。
我认为这可以通过类似以下代码来实现:
after_initialize do
require_dependency 'topic_query'
# 如果用户已登录且设置了主群组
# 需要获取用户的主群组
# 需要获取主题的位置
TopicQuery.add_custom_filter(:location) do |results, topic_query|
filter = "SOME SQL QUERY HERE"
results = results.joins("{filter}")
results
end
end
这是否是解决我问题的合适方法?
另外,有人对 SQL 查询的内容或如何获取上述两处注释信息有任何建议吗?