Riutilizzo di `external_id` dopo l'eliminazione di un Topic

Stiamo utilizzando la funzionalità external_id per la creazione automatica di argomenti nella nostra integrazione (https://github.com/linuxdojo/catalogbot). Noto tuttavia che se eliminiamo un argomento, non possiamo crearne uno nuovo con lo stesso external_id e invece riceviamo l’errore:

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

È in qualche modo possibile riutilizzare lo stesso external_id dopo che un argomento che lo utilizzava è stato eliminato?

Sono a conoscenza di una soluzione alternativa discussa altrove che utilizza campi personalizzati sugli oggetti Utente, tuttavia gli oggetti Argomento non sembrano supportare campi personalizzati. Esiste un modo?

Questo perché gli argomenti eliminati vengono contrassegnati come eliminati e non rimossi dal database. Voler riassociare un ID a un altro argomento sembra una cattiva idea (ma non l’hai chiesto). Puoi forzare l’effettiva eliminazione dell’argomento (potrebbe essere il modo Introduzione alla funzionalità di eliminazione permanente dei post).

Ciao @pfaffman
Grazie mille per il suggerimento e per avermi spinto a riflettere ulteriormente sul riutilizzo di external_id in generale.

1 Mi Piace

A meno che quegli interi non siano davvero costosi? :thinking:

(Sono contento che ti sia sembrato utile piuttosto che sarcastico!) Spero tu trovi una buona soluzione.

La sfida è che il valore che stiamo utilizzando per external_id dell’Argomento è difficile da modificare (operazione manuale) a causa di una limitazione nell’app con cui ci stiamo integrando (CatalogIt - espone un’API di sola lettura). Spesso eliminiamo manualmente e ricreiamo automaticamente gli Argomenti durante lo sviluppo (questo è tutto ciò che fa l’integrazione - crea argomenti di discussione per gli elementi in CatalogIt quando un utente fa clic su un link “discuti questo elemento”), costringendoci a modificare questo valore ogni volta. Se il valore non viene modificato dopo l’eliminazione dell’argomento e un utente fa clic in seguito sul link “discuti questo elemento”, si verifica l’errore “external already taken”.

Forse archiviare invece di eliminare è un’idea migliore, o forse esiste un meccanismo di nascondi/mostra a cui possiamo appoggiarci. Non ho familiarità con Discourse, è necessaria un po’ di ricerca, approfondirò e vedrò cosa riesco a trovare.

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