Привет,
Я перенёс форум с XenForo на Discourse, и теперь есть много старых тем, которые я хотел бы закрыть. Есть ли способ закрыть все темы старше x месяцев? Я уже настроил это в категории, но это работает только для новых тем.
Привет,
Я перенёс форум с XenForo на Discourse, и теперь есть много старых тем, которые я хотел бы закрыть. Есть ли способ закрыть все темы старше x месяцев? Я уже настроил это в категории, но это работает только для новых тем.
Вы можете закрывать темы массово, используя Performing bulk actions as a moderator
Однако в зависимости от количества тем, которые вы хотите закрыть, возможно, лучше выбрать Administrative Bulk Operations.
Да, должно быть что-то подобное, связанное. Как мне сузить поиск до одной категории?
Вы можете найти 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