Eliminazione in blocco di vecchi e sparsi argomenti

Ciao,

abbiamo migliaia di argomenti vecchi o obsoleti nel nostro forum che vorremmo eliminare. Ho già cercato su Meta un metodo appropriato per farlo, ma non ho trovato una soluzione adeguata.
Sarebbe sufficiente iterare su una lista di ID degli argomenti e impostare il flag deleted_at di ciascun argomento che desideriamo “eliminare”, o esiste un modo migliore? So che è una soluzione piuttosto frettolosa.
Credo che scrivere un plugin aggiuntivo (piccolo) per utilizzare Topic.destroy per un’eliminazione di massa comporti un po’ di sovraccarico.

Cordiali saluti,
Sascha

P.S.
Contesto: Questi argomenti causano problemi di indicizzazione e soft 404, e vorremmo nasconderli ai motori di ricerca. Gli argomenti eliminati sono esclusi dalla nostra sitemap.

Forse vuoi semplicemente rimuoverli dall’elenco? Questo dovrebbe impedire che vengano indicizzati.

Vuoi farlo una sola volta o regolarmente?

Ciao,

sì, vogliamo rimuoverli dall’elenco ed evitare che vengano indicizzati.
Questa operazione verrà eseguita una sola volta, poiché possiamo correggere manualmente eventuali argomenti/post “problematici” futuri che causano problemi di scansione.

Il nostro forum è molto vecchio (nato nel 1996) ed è stato migrato numerose volte, con sintassi strane/obsolete nel testo grezzo e altro. Abbiamo raccolto tutti gli argomenti precedenti al 2015, con meno di 1000 visualizzazioni e segnalati come “problematici” nella Search Console di Google.

Per noi va bene se questi argomenti vengono semplicemente contrassegnati come eliminati, ma non eravamo sicuri che impostare direttamente deleted_at fosse una buona idea o se esistessero dipendenze a cui prestare attenzione. Quindi, se dovessimo procedere in modo programmatico.

Se vuoi eliminarle, credo che tu debba davvero chiamare topic.delete. Se ci sono dipendenze, verranno gestite automaticamente.

Grazie per il tuo consiglio! Nel caso in cui decidessimo di eliminare completamente questi argomenti, imposterei deleted_at e visible=false tramite una query SQL. Questi argomenti verrebbero poi eliminati da un job Sidekiq dopo 30 giorni.

Tuttavia, se questi argomenti dovessero essere mantenuti, farò come hai suggerito e li “eliminerò” tramite un piccolo snippet Ruby utilizzando topic.delete.

In entrambi i casi, questi argomenti verranno gestiti da Discourse stesso alla fine, il che dovrebbe occuparsi di eventuali dipendenze.

Grazie mille!