Una idea es incluir un ID externo en el registro del usuario y luego podrías usar /by-external/:external_id. Otra opción es utilizar un webhook para notificar a tu base de datos externa si cambian su nombre de usuario. Otra alternativa es simplemente deshabilitar el cambio de nombres de usuario. Tras una mirada rápida a discourse/config/routes.db, no veo ninguna ruta que utilice el user_id.