После недавнего обновления до версии 2.6.0.beta3 некоторые ответы в различных темах отображаются в неправильном порядке. Метки времени показываются верно, но затронутые ответы всегда находятся внизу темы.
Я пробовал обновить систему снова и выполнить команду rake posts:reorder_posts для затронутых тем, но это не помогло. Есть ли что-то ещё, что я могу сделать, чтобы исправить порядок? Или это ошибка в Discourse? Ответы отображаются одинаково для всех пользователей.
Запуск запроса из posts:reorder_posts показывает, что sort_order для ряда постов выглядит странно, и кажется, что rake-задача должна их обновить, но этого не происходит.
Пытаясь вручную воссоздать задачу rake, я выполнил:
WITH ordered_posts AS (
SELECT
id,
ROW_NUMBER() OVER (
PARTITION BY
topic_id
ORDER BY
created_at,
post_number
) AS new_post_number
FROM
posts
/*where*/
)
SELECT
p.post_number,
p.sort_order,
o.new_post_number
FROM
posts AS p, ordered_posts AS o
WHERE
p.id = o.id
Что объясняет, почему задача rake ничего не делает — она считает, что делать нечего… В задаче rake есть дополнительное условие where, сравнивающее post_number с new_post_number, а не sort_order.
Теперь я вручную выполнил в базе данных:
WITH ordered_posts AS (
SELECT
id,
ROW_NUMBER() OVER (
PARTITION BY
topic_id
ORDER BY
created_at,
post_number
) AS new_post_number
FROM
posts
/*where*/
)
UPDATE
posts AS p
SET
sort_order = o.new_post_number
FROM
ordered_posts AS o
WHERE
p.id = o.id AND
p.sort_order <> o.new_post_number
Я тоже этого не понимаю. Просматривая код, я не нашёл никаких причин этому. Похоже, что что-то изменяет порядок сортировки, но я не вижу, что именно.
Я думал, что они вышли из порядка после обновления, так как сообщения, которые оказались не на своих местах, обычно были гораздо старше и ранее отображались в ожидаемом месте. Когда я выполнил SQL-запрос выше, всё казалось в порядке, но на прошлой неделе несколько совершенно новых постов тоже теперь отображаются не по порядку. Мне кажется, что затрагиваемые посты всегда являются ответами на другой пост. Например:
У меня та же проблема. Ранее я сталкивался с ошибками 502 при перемещении сообщений в длинных темах, не уверен, связано ли это с чем-то. У меня также установлен плагин «Вопросы и ответы», но после его отключения сообщения всё ещё появляются в конце тем.
Очень вероятно, что это не действительно поддерживаемый или официальный плагин. Поле sort_order используется в ядре Discourse непоследовательно, и мы рассматриваем возможность удаления этого столбца.
Переношу это в Support, так как вижу здесь ошибку в неофициальном плагине.
@angus Можешь посмотреть эту проблему? Я установил этот плагин, и ответы на всём сайте стали появляться в неправильном порядке. Я только что удалил плагин, но ответы всё ещё отображаются не по порядку.
Привет, извините, что вы столкнулись с этой проблемой. Пожалуйста, публикуйте любые обновления по этому вопросу здесь: Question Answer Plugin. @mbcahyono или я отвечу в ближайшее время. Это не общий вопрос по поддержке Discourse.