Сейчас я занимаюсь импортом данных из кастомного форума в Discourse. В устаревшем форуме около 30 тысяч тем, и в идеале я хотел бы пометить их все как прочитанные в процессе импорта. Если я правильно понимаю, соответствующая таблица здесь — post_timings.
Мой вопрос: достаточно ли добавить запись в post_timings для самого последнего поста в каждой теме для каждого пользователя? Или мне придётся добавлять запись для каждого поста, то есть примерно 700 тысяч постов × 2 тысячи пользователей?
Хочу добавить немного деталей о моём конкретном случае: устаревшее программное обеспечение форума, с которого мы мигрируем, ограничено, но просто, а наши участники имеют широкий диапазон возрастов и уровней технической грамотности. Мы создали экземпляр Discourse, чтобы участники могли его попробовать, пока мы готовимся к миграции, и уже получили несколько комментариев о том, что он довольно ошеломляет.
Думаю, это просто кривая обучения — я сам немного так чувствую, хотя я и ИТ-специалист. Когда люди привыкнут к изменениям, я уверен, что они увидят, что Discourse — это явное улучшение по сравнению со старым программным обеспечением.
Меня беспокоит то, что мы можем потерять людей до того, как они дойдут до этого этапа. Если пользователей при первом ответе на импортированную тему возвращают к первому сообщению в теме из 1000 постов, это серьёзно ударяет по удобству использования, и я думаю, что некоторые участники просто сдадутся. Поэтому я очень хочу пометить все импортированные сообщения как прочитанные, чтобы пользователи могли сразу перейти к новому материалу.
Я поискал в архиве перед тем, как опубликовать этот вопрос, но не нашёл ничего, что отвечало бы конкретно на него.
Вам необходимо создать записи в таблице topic_users и в таблице post_timings. Вы можете использовать методы из моделей TopicUser и PostTiming или сделать это более эффективно с помощью SQL.
Вот пример из базового скрипта импорта, который помечает сообщения как прочитанные для их авторов. Вам нужно будет адаптировать его под ваш случай использования.