Наш сайт Discourse для старшеклассников был очень успешным. Слишком успешным. За последние два года, начиная с января 2021 года, у нас было 2,3 миллиона сообщений и 2,9 миллиона лайков.
Мы хотели бы немного навести порядок, чтобы сократить расходы, а также снизить долгосрочные риски взлома или подобных угроз. Начать всё заново было бы болезненно, но открытие о том, что добавление /print в конец URL темы позволяет создавать страницы с 1000 комментариями для PDF, помогает. Мы не можем найти (и я действительно сомневаюсь в существовании) какого-либо удобного способа удалить, скажем, темы за самый старый год.
Есть ли у вас какие-то идеи? Нужно ли нам начинать с чистого листа или есть другие варианты?
Привет! Я рад, что Discourse отлично подошёл для вашего проекта
Просто чтобы убедиться, что я правильно понял: вашим критерием для удаления темы будет только её возраст?
В интерфейсе нет встроенной функции для этого, но вы можете создать и вручную запустить скрипт на Ruby, который удалит темы, созданные до определённой даты.
Содержимое цитат останется.
Что касается внутренних ссылок на удалённую тему, они будут вести на страницу «не найдено».
Да, по умолчанию загруженные файлы будут удалены через 2 дня (если они не используются где-либо ещё, например, внутри цитаты в другой теме). См. настройку clean orphan uploads grace period hours.
Обратите внимание, что темы и сообщения удаляются мягко (soft-delete). Они скрываются, но всё ещё хранятся в базе данных.
Добавлю, что я близок к уверенности в своих словах, но не на 100%… Лучше подождать ответа от более опытного пользователя.
Одно из возможных действий на будущее — включить чат, что, вероятно, и происходит в большинстве случаев, особенно если вы хотите удалить его. Тогда контент будет автоматически удаляться (по умолчанию, кажется, через 90 дней, чего, скорее всего, достаточно).
И ничего из старого контента не важно? А если что-то важно, как вы планируете сохранить полезное? По категориям?
Похоже, что Topic.destroy вызывает PostDestroyer, поэтому, думаю, удаление этих тем сделает то, что вам нужно.
Рекомендую сначала настроить тестовый сайт и протестировать всё там, прежде чем выполнять эти действия на рабочем сервере.
Мне бы, возможно, захотелось создать набор сайтов Discourse — например, по одному для каждого выпуска, чтобы их можно было просто отключить, когда придёт время. Также можно выделить отдельный сайт для общешкольных вопросов и настроить общий сервер аутентификации (либо общешкольный Discourse, либо, надеюсь, тот сервер аутентификации, который использует ваша школа или район). Или, возможно, это для старшеклассников, но не для средней школы. Тогда такая реорганизация может и не иметь смысла.