Ho una tabella members nel database della mia applicazione, dove memorizzo informazioni specifiche dell’applicazione per un sottoinsieme di membri. Una delle colonne è discourse_user_id. Vorrei rendere un link al profilo Discourse del membro. È possibile farlo utilizzando solo il loro ID utente?
Non sto memorizzando discourse_user_name perché l’utente può cambiarlo e, in tal caso, dovrei preoccuparmi di mantenerli in sincronizzazione.
L’unico modo che mi viene in mente è effettuare una richiesta API a /admin/users/<user-id>.json per ottenere il loro nome utente, ma ciò comporterebbe un numero elevato di richieste da eseguire su una pagina di indice, dove sto elencando i membri con link ai loro profili.
L’unica altra cosa che mi viene in mente è creare un plugin per aggiungere una rotta, anche se sembra un dispendio di energie eccessivo per qualcosa che mi aspetto non sia la prima persona a chiedere, quindi volevo verificare se esiste già un’altra soluzione?
Un’idea è inserire un ID esterno nel record dell’utente e poi utilizzare /by-external/:external_id. Un’altra opzione è utilizzare un webhook per notificare il tuo database esterno in caso di modifica del nome utente. Un’altra ancora è semplicemente disabilitare la modifica dei nomi utente. Da una rapida occhiata a discourse/config/routes.rb, non vedo alcuna rotta che utilizzi user_id.
Tuttavia, esplorando la documentazione dell’API e un client REST, non vedo come aggiornare quel campo. Posso utilizzarlo senza abilitare SSO? (E, anche se abilitassi SSO, sarei in grado di aggiornarlo programmaticamente?)