Sto costruendo un sito che è una community immobiliare per affitti, con la funzionalità principale incentrata su discussioni specifiche per città. Ci saranno dati utente che specificano le città di cui hanno conoscenza e qual è il loro rapporto con queste città (attualmente residente, ex residente, ecc.), e gli utenti potranno anche iscriversi alle città in cui vogliono investire ma per le quali non hanno competenze. Le città saranno tutte categorie, con un campo personalizzato per memorizzare i dati geocodificati, in modo che gli utenti possano sfogliare le città su una mappa.
Sono un po’ incerto su come strutturare tutto dal punto di vista dell’efficienza del database. Quando si visita una pagina di una città, mostrerò un feed che visualizza gli “esperti membri” di quella città. Se dovessi interrogare tutti gli utenti e scorrere i loro campi personalizzati e l’hash del campo personalizzato “città di competenza” ogni volta che rendo una pagina di categoria, mi sembra che sarebbe piuttosto lento, soprattutto man mano che aumentano il numero di utenti e città.
Se dovessi costruire questo nella mia applicazione Rails, il problema sarebbe facilmente risolto con alcune tabelle di join e relazioni has_many_through o simili. La mia domanda è: qual è l’approccio consigliato per un plugin che necessita di una tabella di join? Sembra che le migrazioni e le tabelle personalizzate siano sconsigliate e che sia generalmente meglio utilizzare campi personalizzati o PluginStore – non sono riuscito a trovare una documentazione reale su PluginStore, ma sono attualmente nel processo di approfondimento.
Ho pensato che fosse saggio chiedere l’approccio “ufficiale raccomandato da Discourse” prima di andare troppo avanti in una direzione specifica.
Grazie ![]()
Zach