# Ответы в теме отображаются не по порядку

**URL:** https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512
**Category:** Support
**Created:** [07.Октябрь.2020 08:54:58 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512 "2020-10-07T08:54:58Z")
**Posts on this page:** 15
**Page:** 1

<div class="post-metadata">

### Author: ![AJDurant](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ajdurant/32/196334_2.png) [@AJDurant](https://meta.discourse.org/u/AJDurant)
#### Post date: [07.Октябрь.2020 08:54:58 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/1 "2020-10-07T08:54:58Z")

</div>

После недавнего обновления до версии 2.6.0.beta3 некоторые ответы в различных темах отображаются в неправильном порядке. Метки времени показываются верно, но затронутые ответы всегда находятся внизу темы.

Я пробовал обновить систему снова и выполнить команду `rake posts:reorder_posts` для затронутых тем, но это не помогло. Есть ли что-то ещё, что я могу сделать, чтобы исправить порядок? Или это ошибка в Discourse? Ответы отображаются одинаково для всех пользователей.

Пример из одной из тем, это низ темы:

 ![image](https://global.discourse-cdn.com/meta/original/3X/b/d/bd9ad037c25121b2220e1ef1dca98a3819f5570f.png)

---

<div class="post-metadata">

### Author: ![gerhard](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/gerhard/32/119479_2.png) [@gerhard](https://meta.discourse.org/u/gerhard)
#### Post date: [07.Октябрь.2020 10:44:17 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/2 "2020-10-07T10:44:17Z")

</div>

Вы случайно не переместили последние два сообщения в эту тему? В таком случае это ожидаемое поведение.

---

<div class="post-metadata">

### Author: ![AJDurant](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ajdurant/32/196334_2.png) [@AJDurant](https://meta.discourse.org/u/AJDurant)
#### Post date: [07.Октябрь.2020 10:52:45 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/3 "2020-10-07T10:52:45Z")

</div>

Нет, они всегда были в этой теме, и до обновления ответы шли в ожидаемом порядке.

Это происходит не в одной теме, а, похоже, во всех. Есть один или два ответа в конце, которые не должны там быть.

---

<div class="post-metadata">

### Author: ![scavin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/scavin/32/115938_2.png) [@scavin](https://meta.discourse.org/u/scavin)
#### Post date: [16.Октябрь.2020 11:13:30 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/4 "2020-10-16T11:13:30Z")

</div>

У меня была та же проблема.

---

<div class="post-metadata">

### Author: ![scavin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/scavin/32/115938_2.png) [@scavin](https://meta.discourse.org/u/scavin)
#### Post date: [16.Октябрь.2020 11:22:32 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/5 "2020-10-16T11:22:32Z")

</div>

Нет, я не перемещаю сообщения в тему, но ответы в ветке отображаются в неправильном порядке.

---

<div class="post-metadata">

### Author: ![AJDurant](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ajdurant/32/196334_2.png) [@AJDurant](https://meta.discourse.org/u/AJDurant)
#### Post date: [30.Октябрь.2020 10:38:12 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/6 "2020-10-30T10:38:12Z")

</div>

Запуск запроса из `posts:reorder_posts` показывает, что sort\_order для ряда постов выглядит странно, и кажется, что rake-задача должна их обновить, но этого не происходит.

 ![image](https://global.discourse-cdn.com/meta/original/3X/2/0/208a143d21891aecbfe5ecac7ec137a7804da752.png)  
При выполнении:

```SQL
SELECT
id,
post_number,
sort_order,
ROW_NUMBER() OVER (
    PARTITION BY
    topic_id
    ORDER BY
    created_at,
    post_number
) AS new_post_number
FROM
posts

```

---

<div class="post-metadata">

### Author: ![AJDurant](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ajdurant/32/196334_2.png) [@AJDurant](https://meta.discourse.org/u/AJDurant)
#### Post date: [30.Октябрь.2020 11:02:48 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/7 "2020-10-30T11:02:48Z")

</div>

Пытаясь вручную воссоздать задачу rake, я выполнил:

```SQL
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

```

результат:

 ![image](https://global.discourse-cdn.com/meta/original/3X/8/b/8b75dc862f99f58f33c39c74df29a8ff45623ff0.png)

Что объясняет, почему задача rake ничего не делает — она считает, что делать нечего… В задаче rake есть дополнительное условие `where`, сравнивающее post\_number с new\_post\_number, а не sort\_order.

Теперь я вручную выполнил в базе данных:

```SQL
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

```

и теперь посты отображаются в правильном порядке.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [10.Ноябрь.2020 00:47:28 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/8 "2020-11-10T00:47:28Z")

</div>

Я до сих пор не понимаю, как вы пришли к такому состоянию. Единственное место, где мы с этим работаем, — это при перемещении постов.

Создатель поста просто устанавливает sort\_order равным post\_number.

> <https://github.com/discourse/discourse/blob/4ae15285691c62abb2d884cc6a055a0556ef4b33/lib/post_creator.rb#L303-L303>

В долгосрочной перспективе я даже не уверен, что хочу сохранять колонку sort\_order, она кажется своего рода «подводным камнем».

Есть ли здесь какие-либо задействованные плагины?

---

<div class="post-metadata">

### Author: ![AJDurant](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/ajdurant/32/196334_2.png) [@AJDurant](https://meta.discourse.org/u/AJDurant)
#### Post date: [10.Ноябрь.2020 12:01:08 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/9 "2020-11-10T12:01:08Z")

</div>

Я тоже этого не понимаю. Просматривая код, я не нашёл никаких причин этому. Похоже, что что-то изменяет порядок сортировки, но я не вижу, что именно.

Я думал, что они вышли из порядка после обновления, так как сообщения, которые оказались не на своих местах, обычно были гораздо старше и ранее отображались в ожидаемом месте. Когда я выполнил SQL-запрос выше, всё казалось в порядке, но на прошлой неделе несколько совершенно новых постов тоже теперь отображаются не по порядку. Мне кажется, что затрагиваемые посты всегда являются ответами на другой пост. Например:

 ![image](https://global.discourse-cdn.com/meta/original/3X/5/f/5f27a02b5d8b3398209dd93c8c7bac12a1eb55dd.png)

У нас установлены следующие плагины:

 ![image](https://global.discourse-cdn.com/meta/original/3X/2/5/25f470004cc40a9f3220efef1f7a2492309dd4b2.png)

Думаю, плагин question-answer изменяет порядок сортировки, но это должно влиять только на темы вопросов, а не на обычные.

---

<div class="post-metadata">

### Author: ![DiscourseMetrics](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/discoursemetrics/32/55756_2.png) [@DiscourseMetrics](https://meta.discourse.org/u/DiscourseMetrics)
#### Post date: [11.Ноябрь.2020 09:36:18 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/10 "2020-11-11T09:36:18Z")

</div>

У меня та же проблема. Ранее я сталкивался с ошибками 502 при перемещении сообщений в длинных темах, не уверен, связано ли это с чем-то. У меня также установлен плагин «Вопросы и ответы», но после его отключения сообщения всё ещё появляются в конце тем.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [12.Ноябрь.2020 01:16:43 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/11 "2020-11-12T01:16:43Z")

</div>

> [@AJDurant](#):
>
> Полагаю, что «вопрос-ответ» изменяет порядок сортировки,

Очень вероятно, что это не действительно поддерживаемый или официальный плагин. Поле sort\_order используется в ядре Discourse непоследовательно, и мы рассматриваем возможность удаления этого столбца.

Переношу это в #Support, так как вижу здесь ошибку в неофициальном плагине.

---

<div class="post-metadata">

### Author: ![dfriestedt](https://avatars.discourse-cdn.com/v4/letter/d/a698b9/32.png) [@dfriestedt](https://meta.discourse.org/u/dfriestedt)
#### Post date: [01.Декабрь.2020 20:53:48 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/12 "2020-12-01T20:53:48Z")

</div>

@angus Можешь посмотреть эту проблему? Я установил этот плагин, и ответы на всём сайте стали появляться в неправильном порядке. Я только что удалил плагин, но ответы всё ещё отображаются не по порядку.

---

<div class="post-metadata">

### Author: ![dfriestedt](https://avatars.discourse-cdn.com/v4/letter/d/a698b9/32.png) [@dfriestedt](https://meta.discourse.org/u/dfriestedt)
#### Post date: [02.Декабрь.2020 11:27:42 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/14 "2020-12-02T11:27:42Z")

</div>

Я провел тест на одном посте, чтобы проверить, исправит ли следующая команда некорректный порядок ответов в посте (после удаления плагина Q&A).

`rake posts:reorder_posts[1896]`

К сожалению, посты по-прежнему отображаются в неправильном порядке.

[![](https://global.discourse-cdn.com/meta/original/3X/f/6/f6a351441fbaa007400dd4f38815e61feea70cfb.png) ](https://dl.dropboxusercontent.com/s/3dzgeklm6y6f941/Screen%20Shot%202020-12-02%20at%204.26.36%20AM.png?dl=0)

---

<div class="post-metadata">

### Author: ![angus](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/angus/32/341715_2.png) [@angus](https://meta.discourse.org/u/angus)
#### Post date: [02.Декабрь.2020 21:30:08 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/15 "2020-12-02T21:30:08Z")

</div>

Привет, извините, что вы столкнулись с этой проблемой. Пожалуйста, публикуйте любые обновления по этому вопросу здесь: [Question Answer Plugin](https://meta.discourse.org/t/question-answer-plugin/56032). @mbcahyono или я отвечу в ближайшее время. Это не общий вопрос по поддержке Discourse.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [02.Декабрь.2020 21:42:28 UTC](https://meta.discourse.org/t/replies-in-thread-showing-out-of-order/166512/16 "2020-12-02T21:42:28Z")

</div>


