Wenn ich versuche, den Stern bei meinem Bug Reporter-Abzeichen zu entfernen, um ein anderes Abzeichen als mein Favorit zu verwenden, erhalte ich die Fehlermeldung „FAILED“. Andere Abzeichen können ent-gesteamt werden (ist das überhaupt ein Wort?), aber dieses kann nicht ent-gesteamt werden.
Ich kann es problemlos entsternen.
Könnte es etwas mit Ihrer Internetverbindung zu tun haben, die im Video abbricht? Nur eine wilde Vermutung.
Ich habe es mit stabilem WLAN ausprobiert. Ich bekomme immer noch den Fehler.
Dieser Fehler besteht schon seit langer Zeit. Ich habe ihn letztes Jahr recherchiert, und hier sind die Schritte, um ihn zu reproduzieren:
- Als Administrator setzen Sie
max favorite badgesauf 2 und erstellen Sie mindestens eine Auszeichnung, die mehrmals verdient werden kann. - Als normaler Benutzer markieren Sie zwei Auszeichnungen als Favoriten, eine davon ist die Auszeichnung, die mehrmals verdient werden kann (im Folgenden als Auszeichnung A bezeichnet).
- Als Administrator verleihen Sie dem Benutzer Auszeichnung A erneut.
- Als normaler Benutzer aktualisieren Sie die Seite und versuchen Sie, Auszeichnung A zu entfavorisieren. Sie werden auf den Fehler stoßen.
Der Grund für den Fehler ist, dass jedes Mal, wenn eine Auszeichnung, die mehrmals verdient werden kann, verliehen wird, ein neuer user_badge-Datensatz in der Datenbank erstellt wird. Wenn der Benutzer die Auszeichnung jedoch favorisiert hat und sie dann erneut erhält, wird der neue user_badge-Datensatz nicht automatisch als is_favorite markiert. Wenn der Benutzer versucht, Auszeichnung A zu entfavorisieren, sendet das Frontend standardmäßig die aktuellste user_badge-ID. Da dieser Datensatz nicht als is_favorite markiert ist, geht das Backend davon aus, dass der Benutzer versucht, eine neue Auszeichnung als Favorit zu setzen (anstatt sie zu entfavorisieren), was das Limit von max favorite badges überschreitet und zu dem Fehler führt.
Der relevante Code befindet sich hier:
Eine mögliche Lösung besteht darin, Zeile 131 zu ändern in:
if UserBadge.where(badge: user_badge.badge, user: user_badge.user).pluck(:is_favorite).any? &&
Dies behebt jedoch nicht vollständig die Inkonsistenz in den Datenbankeinträgen.
Als vorübergehende Lösung kann ein normaler Benutzer alle Auszeichnungen entfavorisieren, indem er den folgenden JavaScript-Code in der Konsole ausführt:
const user_name = require("discourse/models/user").default.current().username;
const badges = await require("discourse/models/user-badge").default.findByUsername(user_name);
const favorites = new Map();
badges.filter((b)=>b.is_favorite).forEach((b)=>favorites.set(b.badge_id,b));
favorites.forEach((b)=>b.favorite());
Ich bin gerade auf diesen Fehler gestoßen, aber wenn ich den Code in die Konsole kopiere und einfüge, erhalte ich die folgende Syntaxfehlermeldung:
SyntaxError: Unerwarteter Bezeichner ‘require’. Erwartet ‘;’ nach Variablendeklaration.
SyntaxError: Unerwarteter Bezeichner ‘identifier’
Vielleicht ist das etwas veraltet? Hat jemand eine aktualisierte Version?
Nun, ich habe meinen anderen Badge (Empathisch) entmarkiert, dann konnte ich den Bug Reporter Badge entmarkieren.
Danach, wenn ich den Empathisch Badge markiert hätte, was funktionierte, gab das Markieren von Aficionado diesen Fehler zurück. Sehr seltsam.
EDIT: Nachdem ich die Seite zwischen jedem erneuten Markieren neu geladen hatte, habe ich den (ironischerweise) fehlerhaften Bug Reporter Badge entfernt.
Hallo, danke für deinen Beitrag! Ich habe deinen PR überprüft und er muss noch etwas geändert werden.
Danke für deine Überprüfung, ich habe diesen PR aktualisiert.
Großartig! Dies wurde genehmigt und zusammengeführt.
Die Änderung sollte in Kürze auf Meta verfügbar sein.
Dieses Thema wurde nach 3 Tagen automatisch geschlossen. Neue Antworten sind nicht mehr möglich.
