Chiudere massivamente gli argomenti esistenti più vecchi di x?

Ciao,

Ho migrato un forum da XenForo a Discourse, ora ci sono molti vecchi post che vorrei chiudere. C’è un modo per dire “chiudi tutti gli argomenti più vecchi di x mesi”? Ho già impostato questo nella categoria, ma funziona solo per i nuovi argomenti.

2 Mi Piace

Potresti provare a utilizzare questa impostazione nelle impostazioni della categoria:

Non sono sicuro se chiuderà le cose retroattivamente, ma vale la pena provare.

Il mio altro pensiero era quello di fare un filtro avanzato e impostare una data precedente:

Da lì puoi usare azioni di massa sugli argomenti che emergono.

4 Mi Piace

Puoi chiudere argomenti in blocco con Performing bulk actions as a moderator
Ma a seconda di quanti argomenti vuoi chiudere, Administrative Bulk Operations potrebbe essere la scelta migliore.

7 Mi Piace

Sì, ci sarebbe qualcosa di simile collegato, come posso restringerlo a una categoria?

2 Mi Piace

Puoi trovare l’ID della categoria, quindi usarlo come condizione aggiuntiva nel comando. Ad esempio, chiudi tutti gli argomenti aperti nella categoria ‘generale’ creati prima del 24 settembre:

cat_id = Category.find_by_slug('general').id
Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).find_each do |topic|
  topic.update_status('closed', true, Discourse.system_user)
end

Questi tipi di operazioni mi mettono sempre un po’ in ansia. Assicurati di creare un backup del tuo database prima di eseguirli nel caso in cui qualcosa vada storto. Potrebbe anche essere una buona idea eseguire un qualche tipo di controllo preliminare per assicurarti di operare sui dati corretti. Un modo per farlo sarebbe restituire il count degli argomenti su cui verrà eseguita l’operazione. Ad esempio:

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
4 Mi Piace

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