Допустим, у вас есть много очень старых постов, которые автоматически закроются, как только вы включите эту настройку для категории. Когда вы включаете настройку, например, для автоматического закрытия постов после 5 лет без активности, когда все эти посты будут автоматически закрыты? Сразу после нажатия кнопки «Сохранить»? Или есть какая-то автоматическая очистка, происходящая в фоновом режиме? Вероятно ли, что это вызовет проблемы с производительностью?
И второй вопрос: открываются ли посты, которые были автоматически закрыты, если вы измените временной интервал для категории? Я предполагаю, что нет. Также я предполагаю, что через интерфейс нет простого способа открыть их массово. Верно ли это?
По умолчанию настройка автоматического закрытия в категории применяется только к новым темам.
Существующие темы не закрываются автоматически сразу после сохранения настройки. Они останутся открытыми, если вы явно не примените к ним автоматическое закрытие.
Существует специальный скрипт (rake topics:apply_autoclose), который можно запустить через консоль сервера, чтобы применить таймер автоматического закрытия к существующим темам. Этот скрипт тихо закрывает подходящие темы (те, которые достаточно старые, согласно вашей настройке), минимизируя уведомления.
Применение настройки ко всем старым темам сразу с помощью скрипта — это фоновая операция. Если у вас очень большое сообщество и много старых тем, это может занять некоторое время, но выполняется на стороне сервера. Влияние на производительность варьируется в зависимости от хостинга и количества тем, но задача rake предназначена для массовых операций и не должна серьезно влиять на здоровые, правильно настроенные сайты Discourse.
Обсуждение этого вопроса здесь:
Изменение времени автоматического закрытия НЕ открывает заново темы, которые уже были закрыты (то есть закрытие не отменяется).
Встроенной опции пользовательского интерфейса для массового повторного открытия закрытых тем нет.
Однако вы можете использовать скрипт или команду консоли Rails для массового открытия тем.
Topic.where(closed: true).where("created_at < 'your_date'").find_each do |topic|
topic.update_status('closed', false, Discourse.system_user)
end