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.
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: