Wiederverwendung von `external_id` nach Löschung eines Themas

Wir verwenden die external_id-Funktion für die automatische Erstellung von Themen in unserer Integration. Mir ist jedoch aufgefallen, dass wir, wenn wir ein Thema löschen, kein neues mit derselben external_id erstellen können und stattdessen die Fehlermeldung erhalten:

{'action': 'create_post', 'errors': ['External has already been taken']}

Ist es überhaupt möglich, dieselbe external_id wiederzuverwenden, nachdem ein Thema, das sie verwendet hat, gelöscht wurde?

Mir ist ein Workaround bekannt, der anderswo diskutiert wurde und benutzerdefinierte Felder für Benutzerobjekte verwendet. Allerdings scheinen Themenobjekte keine benutzerdefinierten Felder zu unterstützen. Gibt es eine Möglichkeit?

Das liegt daran, dass gelöschte Themen als gelöscht markiert und nicht aus der Datenbank entfernt werden. Die ID wieder einem anderen Thema zuzuordnen, scheint eine schlechte Idee zu sein (aber Sie haben nicht danach gefragt). Sie können erzwingen, dass das Thema tatsächlich gelöscht wird (möglicherweise über Introducing permanently delete post functionality).

Hallo @pfaffman
Vielen Dank für den Vorschlag und den Anstoß, über die Wiederverwendung von external_id im Allgemeinen nachzudenken.

1 „Gefällt mir“

Es sei denn, diese ganzen Zahlen sind wirklich teuer? :thinking:

(Ich bin froh, dass ich hilfreich und nicht sarkastisch wirkte!) Ich hoffe, Sie finden eine gute Lösung.

Die Herausforderung besteht darin, dass der Wert, den wir für die externe ID des Themas verwenden, aufgrund einer Einschränkung in der App, mit der wir integrieren (CatalogIt – stellt eine schreibgeschützte API bereit), schwer zu ändern ist (manuelle Bedienung). Wir löschen und erstellen Themen oft manuell neu, während wir entwickeln (dies ist alles, was die Integration tut – sie erstellt Diskussions-Themen für Elemente in CatalogIt, wenn ein Benutzer auf einen Link „Dieses Element diskutieren“ klickt), was uns zwingt, diesen Wert jedes Mal zu ändern. Wenn der Wert nach dem Löschen des Themas nicht geändert wird und ein Benutzer später auf den Link „Dieses Element diskutieren“ klickt, stoßen wir auf den Fehler „external already taken“.

Vielleicht ist Archivieren statt Löschen eine bessere Idee, oder vielleicht gibt es einen Ausblenden/Einblenden-Mechanismus, auf den wir zurückgreifen können. Ich bin mit Discourse nicht vertraut, einige Recherche ist erforderlich, ich werde mich damit befassen und sehen, was ich finden kann.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.