Estoy construyendo un sitio que es una comunidad inmobiliaria de alquiler, cuya funcionalidad central se centra en discusiones específicas por ciudad. Habrá datos de usuarios que especifiquen las ciudades sobre las que tienen conocimientos y cuál es su relación con esas ciudades (actualmente viven allí, vivieron allí, etc.), y los usuarios también se suscribirán a ciudades en las que quieren invertir pero sobre las que no tienen conocimientos. Todas las ciudades serán categorías, con un campo personalizado para marcar sus datos geocodificados para que los usuarios puedan navegar por las ciudades en un mapa.
Donde tengo dudas es en cómo debería estructurar esto desde el punto de vista de la eficiencia de la base de datos. Cuando estás en una página de ciudad, mostraré un feed que muestre a los “expertos miembros” de esa ciudad. Si tengo que consultar a todos los usuarios y recorrer sus campos personalizados y el hash del campo personalizado “ciudades expertas” cada vez que se renderiza una página de categoría, siento que sería bastante lento, especialmente a medida que crece la cantidad de usuarios y ciudades.
Si estuviera construyendo esto en mi propia aplicación Rails, esto se resolvería fácilmente con algunas tablas de unión y relaciones has_many_through de modelos o algo similar. Lo que me pregunto aquí es cuál es el enfoque recomendado para un plugin que necesita una tabla de unión. Parece que las migraciones y tablas personalizadas están desaconsejadas y que generalmente es mejor usar campos personalizados o PluginStore; no he podido encontrar documentación real sobre el tema de PluginStore, pero actualmente estoy en proceso de investigar.
Pensé que sería prudente preguntar sobre el enfoque “oficial recomendado por Discourse” antes de profundizar demasiado en ninguna dirección.
Gracias ![]()
Zach