Merci pour vos conseils ! Dans le cas où nous choisirions de supprimer complètement ces sujets, je définirai deleted_at et visible=false via une requête SQL. Ces sujets seront supprimés par un job Sidekiq après 30 jours.
Cependant, si ces sujets doivent être conservés, je ferai ce que vous avez suggéré et les « supprimerai » via un petit snippet Ruby en utilisant topic.delete.
Dans les deux cas, ces sujets seront donc traités par Discourse lui-même à la fin, ce qui devrait prendre en charge les éventuelles dépendances.
Merci beaucoup !