Tenho uma tabela de membros no banco de dados da minha aplicação, onde armazeno informações específicas da aplicação sobre um subconjunto de membros. Uma das colunas é discourse_user_id. Gostaria de renderizar um link para o perfil do membro no Discourse. É possível fazer isso apenas com o ID do usuário?
Não estou armazenando discourse_user_name, pois o usuário pode alterá-lo, e eu teria que me preocupar em mantê-los sincronizados.
A única maneira que consigo pensar é fazer uma solicitação de API para /admin/users/<user-id>.json para obter o nome de usuário, mas isso resultaria em um grande número de solicitações ao carregar uma página de índice, onde estou listando membros com links para seus perfis.
A única outra coisa que me vem à mente é criar um plugin para adicionar uma rota, embora isso pareça muito esforço para algo que eu esperaria não ser a primeira pessoa a perguntar. Por isso, gostaria de verificar se já existe outra solução?
Uma ideia é colocar um ID externo no registro do usuário e, em seguida, você pode usar /by-external/:external_id. Outra opção é usar um webhook para notificar seu banco de dados externo caso eles alterem o nome de usuário. Outra alternativa é simplesmente desabilitar a alteração de nomes de usuário. De uma rápida olhada em discourse/config/routes.db, não vejo nenhuma rota que utilize o user_id.
Obrigado, @pfaffman, isso foi muito útil. Acredito que usar um ID externo seria ideal, pois também resolve outro problema — vincular na direção inversa.
Porém, ao examinar a documentação da API e um cliente REST, não vejo como atualizar esse campo. Posso usá-lo sem ativar o SSO? (E, mesmo que eu ativasse o SSO, seria possível atualizá-lo programaticamente?)