Fermeture massive des sujets existants plus anciens que x ?

Vous pouvez trouver l’ID de la catégorie, puis l’utiliser comme condition supplémentaire dans la commande. Par exemple, fermez tous les sujets ouverts dans la catégorie ‘general’ qui ont été créés avant le 24 septembre :

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

Ce type d’opérations me rend toujours un peu nerveux. Assurez-vous de créer une sauvegarde de votre base de données avant de les exécuter au cas où quelque chose tournerait mal. Il pourrait également être judicieux d’effectuer une sorte de vérification préliminaire pour vous assurer que vous opérez sur les bonnes données. Une façon de le faire serait de retourner le count des sujets sur lesquels l’opération sera effectuée. Par exemple :

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
4 « J'aime »