x より古い既存のトピックを一括削除しますか?

カテゴリIDを見つけて、それをコマンドの追加条件として使用できます。たとえば、「general」カテゴリで9月24日より前に作成されたすべての未解決トピックを閉じます。

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

このような操作は、常に少し不安になります。万が一問題が発生した場合に備えて、データベースのバックアップを作成してください。また、操作対象の正しいデータであることを確認するために、何らかの予備チェックを実行することも良い考えです。その方法の1つは、操作が実行されるトピックのcountを返すことです。たとえば、次のようになります。

Topic.where(closed: false).where("created_at < '2024-09-24'").where(category_id: cat_id).count
「いいね!」 4