Массово закрыть существующие темы старше x?

Вы можете найти ID категории и использовать его как дополнительное условие в команде. Например, закрыть все открытые темы в категории «general», созданные до 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

Такие операции всегда немного волнуют. Обязательно создайте резервную копию базы данных перед их выполнением на случай непредвиденных ситуаций. Также разумно будет провести предварительную проверку, чтобы убедиться, что вы работаете с нужными данными. Один из способов — вывести count тем, к которым будет применена операция. Например:

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