Ich habe eine Tabelle namens members in der Datenbank meiner Anwendung, in der ich anwendungsspezifische Informationen über eine Teilmenge der Mitglieder speichere. Eine der Spalten ist discourse_user_id. Ich möchte einen Link zum Discourse-Profil des Mitglieds rendern. Ist das nur mit der Benutzer-ID möglich?
Ich speichere discourse_user_name nicht, da der Benutzer diesen ändern kann, und ich müsste dann befürchten, sie synchron zu halten.
Der einzige Weg, an den ich denken kann, ist eine API-Anfrage an /admin/users/<user-id>.json, um ihren Benutzernamen zu erhalten. Das wären jedoch sehr viele Anfragen auf einer Indexseite, auf der ich Mitglieder mit Links zu ihren Profilen aufliste.
Das Einzige, was mir noch einfällt, ist ein Plugin zu erstellen, das eine Route hinzufügt. Das scheint jedoch für etwas, bei dem ich erwarte, dass ich nicht der Erste bin, der danach fragt, zu viel Aufwand zu sein. Daher wollte ich prüfen, ob es bereits eine andere Lösung gibt?
Eine Idee wäre, eine externe ID im Benutzerdatensatz zu speichern und dann /by-external/:external_id zu verwenden. Eine andere Möglichkeit ist die Nutzung eines Webhooks, um Ihre externe Datenbank zu benachrichtigen, falls sich der Benutzername ändert. Eine weitere Option ist, die Änderung von Benutzernamen einfach zu deaktivieren. Bei einem kurzen Blick in discourse/config/routes.rb sehe ich keine Route, die die user_id verwendet.
Beim Durchsuchen der API-Dokumentation und mit einem REST-Client sehe ich jedoch nicht, wie man dieses Feld aktualisieren kann. Kann ich das nutzen, ohne SSO zu aktivieren? (Und selbst wenn ich SSO aktivieren würde, könnte ich es dann programmgesteuert aktualisieren?)