Ich habe kürzlich eine Website zu Discourse migriert. Was mir nicht bewusst war, ist, dass sich die Benutzernamen vieler Benutzer geändert haben und die neuen Benutzernamen einen Teil ihrer E-Mail-Adresse zu verwenden scheinen. Ich habe noch nie erlebt, dass sich Benutzernamen bei früheren Migrationen geändert haben. Wie kann ich das rückgängig machen?
Wenn Sie bereits live sind, wird es schwierig sein, Dinge zu ändern, obwohl der ursprüngliche Benutzername in einem benutzerdefinierten Feld des Benutzers stehen sollte. Sie möchten diese Probleme wirklich in der Testphase lösen.
Es sei denn, das Migrationsskript ist fehlerhaft, der Grund für die Änderung von Benutzernamen ist, dass sie mit dem Discourse-Benutzernamenformat inkompatibel sind.
Welche Benutzernamen wurden geändert? Wovon haben Sie migriert?
Vielen Dank für Ihre Antwort, Jay. Wir mussten die Website in den Wartungsmodus versetzen, um diese Korrekturen vorzunehmen. Es war seltsam, dass die Spalten für Benutzername und Name geändert wurden. Wir sehen, wie wir sie austauschen können. Das ist sehr verwirrend…
Sie können UserCustomField.where(user_id: some_id) betrachten, um zu sehen, welche benutzerdefinierten Felder für diesen Benutzer existieren, was ihren ursprünglichen Benutzernamen enthalten sollte.
Wir konnten tauschen. Aber nach dem Tauschen lassen sich die Profile nicht mehr öffnen! Es wird angezeigt: Ups, Seite nicht gefunden.
Nur zur Überprüfung, hast du deine Seite nach dem Neuzuordnen von Benutzernamen aktualisiert? Discourse verwendet weiterhin den alten Namen clientseitig, bis du neu lädst. Wenn du also Namen neu zugeordnet und nicht neu geladen hast, würde es versuchen, Benutzerprofile zu öffnen, die nicht mehr existieren.
Danke. Wir werden das prüfen.
Außerdem verstehe ich nicht, wie es sich entscheidet, den ersten Teil der E-Mail-Adresse automatisch zuzuweisen.
Die wertvolle Plattform erlaubte Benutzern, Profilnamen mit Leerzeichen und Sonderzeichen zu erstellen, und sie verwendete die Benutzer-ID für die URL.
Können wir die Benutzer-ID in der URL verwenden und die Migration von Profilnamen mit Leerzeichen und Sonderzeichen beibehalten?
Wir haben festgestellt, dass die Benutzernamen und Namen von Sims identisch waren.
Wir haben festgestellt, dass einige Namen jetzt Leerzeichen enthalten.
Wenn wir die Abschnitte für Benutzernamen und Namen vertauschen, weist Discourse möglicherweise die halbe E-Mail-ID als Benutzernamen für diejenigen zu, die nicht den Profilnamensrichtlinien entsprechen.
Und warum sollte Discourse überhaupt E-Mail-Adressen verwenden? Sicherheitsrisiko
Nein. Discourse erlaubt keine Leerzeichen oder (die meisten) Sonderzeichen in Benutzernamen. Deshalb wurden sie neu geschrieben.
Ich verstehe nicht, was Sie über die URL sagen.
Es muss etwas verwenden, um einen Benutzernamen zu generieren.
Es macht Folgendes:
UserNameSuggester.suggest(
opts[:username].presence || opts[:name].presence || opts[:email],
Wenn Sie also keinen Benutzernamen oder keinen Namen haben, greift es auf den ersten Teil der E-Mail-Adresse zurück.
Können wir es also in etwas anderes ändern? Oder die E-Mail-ID als Option entfernen?