Hola,
Estoy trabajando en un plugin que filtra todos los temas según el lugar donde se publicó el tema y el grupo al que pertenece el usuario que lo visualiza. El caso de uso aquí es tener un equipo de soporte en diferentes países que atienda las preguntas provenientes de sus propias ubicaciones.
Soy un creador de plugins de Discourse principiante y aún estoy aprendiendo cómo hacerlo. La ubicación del tema se manejará mediante el plugin de ubicaciones disponible aquí: Locations Plugin 🌍
Y agregaré a los usuarios que necesiten esta vista filtrada a un grupo con un nombre como NA_queue o EU_queue.
El plugin verificará si el usuario ha iniciado sesión y si se ha establecido su grupo principal. Si es así, filtrará todos los temas para que coincidan con la cola a la que pertenece el usuario actual.
Pienso que esto podría hacerse con algo similar al siguiente código:
after_initialize do
require_dependency ‘topic_query’
# Si el usuario ha iniciado sesión y tiene un grupo principal establecido
# Necesito obtener el grupo principal del usuario
# Necesito obtener la ubicación del tema
TopicQuery.add_custom_filter(:location) do |results, topic_query|
filter = "ALGUNA CONSULTA SQL AQUÍ"
results = results.joins("{filter}")
results
end
¿Es este un buen enfoque para mi problema?
Además, ¿alguien tiene sugerencias sobre cómo sería la consulta SQL o cómo obtener esas dos piezas de información comentadas?