На моём форуме была создана годовая сводка. Тема была переименована, и поскольку плагин годовой сводки проверяет идентичность заголовков, чтобы решить, нужно ли создавать новую годовую сводку, он создал ещё одну через 24 часа.
Я удалил новую, а первую переименовал обратно в заголовок по умолчанию.
Однако плагин продолжает создавать новые темы каждые 24 часа.
SELECT created_at, title, fancy_title
FROM topics
WHERE title like '%2022%année en cours de révision%'
AND deleted_at IS NULL
ORDER BY created_at DESC
created_at
title
fancy_title
2023-01-04T14:52:19.345Z
2022 : l'année en cours de révision
2022 : l’année en cours de révision
2023-01-01T10:09:20.503Z
2022 : l'année en cours de révision
2022 : l’année en cours de révision
На самом деле он создал новые темы три раза, возможно, из-за различия между обычной кавычкой и красивой кавычкой[1] в заголовке, поэтому мне пришлось удалять лишние. Отсюда разница в датах в три дня и только два результата в запросе, но я хочу оставить только первую созданную тему.
Не могли бы вы подсказать, почему плагин продолжает создавать темы, несмотря на наличие существующей с заголовком по умолчанию, и как это остановить? Что, если я отключу его и включу снова в конце 2023 года? Создаст ли он тему через 24 часа после повторного включения?
Кроме того, это не самое элегантное решение, поэтому я хотел бы точно понять, в чём заключается проблема
Я отключу плагин на ближайшие дни/недели, пока проблема не будет выявлена и предотвращено создание новых годовых сводок.
Привет!
Так, я со-админ. Я изменил только название. Я не менял автора.
Что будет, если есть две темы с одинаковым названием и системным пользователем в качестве автора? Система возьмет последнюю?
Мы переименовали заголовок первой темы ежегодного обзора, а затем вернули его к значению по умолчанию более чем через 24 часа после создания.
Мы не изменяли параметр yearly_review.topic_title.
Если заголовок темы полностью совпадает с заголовком, установленным при первоначальной публикации темы, то предотвращение публикации новых тем для обзора должно обеспечиваться следующей строкой:
return if Topic.where(user: Discourse.system_user, title: title).exists?
Если причина проблемы не в том, что заголовок не совпадает точно, возможно, проблема связана с тем, что тема публикуется на французском языке. Было бы полезно узнать, какое значение присваивается переменной title при выполнении задачи:
title = I18n.t("yearly_review.topic_title", year: review_year)
Возникает вопрос: не пытается ли система сопоставить английский заголовок с французским? Является ли французский язык локалью по умолчанию на вашем сайте?
Редактирование: если тема публикуется с французским заголовком, то переменная title в коде выше, должно быть, устанавливается на французском языке. Следовательно, это вряд ли может быть причиной проблемы.
Они идентичны, если только я не упустил крошечное различие в данных двух тем, которые вернул Data Explorer. При необходимости я могу предоставить дополнительные данные.
Мне следует выполнить это в консоли Rails или где-то ещё?
Да, является.
Я снова включу плагин, чтобы проверить ещё раз, если смогу собрать дополнительную информацию о следующей созданной годовой отчётной теме (если она будет).
Я тоже. Не уверен, что происходит, но проверка на наличие существующей темы кажется немного ненадёжной:
return if Topic.where(user: Discourse.system_user, title: title).exists?
Интересно, есть ли у кого-то из команды Discourse идеи, как это улучшить.
Необходимость отключать плагин, чтобы предотвратить создание нескольких тем, — не лучший подход. Плагин загружает CSS, который используется для стилизации его тем. Если плагин отключён, я не думаю, что CSS загрузится.
Просто примечание: плагин был обновлён с новым французским переводом, поэтому сегодня он создал ещё один новый ежегодный обзор
Я скопировал заголовок этой новой темы, удалил её и переименовал оригинальную, вставив заголовок.
Посмотрим, создаст ли он новую тему завтра, несмотря на моё копирование-вставку исходного заголовка.
Спасибо, что откликнулись на это. Полагаться на заголовок темы, чтобы избежать создания нескольких тем для обзора, — очень ненадежный подход (это моя ошибка). Как только январь закончится, эта проблема не возникнет снова до следующего года. @JammyDodger, возможно, вы могли бы передать сообщение команде Discourse, чтобы они подумали над более надежным способом предотвращения создания нескольких тем. Это следует сделать до января 2024 года. Время действительно летит