Что именно происходит при включении автозакрытия?

Допустим, у вас есть много очень старых постов, которые автоматически закроются, как только вы включите эту настройку для категории. Когда вы включаете настройку, например, для автоматического закрытия постов после 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

Спасибо большое. Клянусь, я искал, но не увидел тот пост, на который вы сослались.