Реакции иногда не отображаются, если отсутствует счетчик лайков

Это связано с тем, что параметр discourse_reactions_like_sync_enabled установлен в значение false. Такое решение было принято намеренно при миграции в мае 2024 года, чтобы не нарушить существующие данные.

Когда этот параметр отключён, синхронизатор ReactionLikeSynchronizer не запускается. Этот синхронизатор отвечает за:

  • Создание записей PostAction (лайки) для реакций
  • Обновление posts.like_count с учётом реакций

При отсутствии работы синхронизации:

  1. Реакции существуют в таблице discourse_reactions_reaction_users
  2. Но соответствующие записи PostAction отсутствуют
  3. А значение posts.like_count остаётся равным 0

Ваша догадка о временных рамках абсолютно верна — у постов 2023/начала 2024 года реакции были добавлены в период, когда синхронизация не работала, поэтому их like_count никогда не обновлялся. Старая логика сериализатора затем полностью исключала действие «лайк», если одновременно выполнялись условия count = 0 И can_act = false (окно отмены действия истекло).

Предлагаемое исправление не устраняет расхождение в самих данных — оно лишь обеспечивает корректное отображение реакций в интерфейсе, даже если данные PostAction/like_count не синхронизированы. На сайтах, где discourse_reactions_like_sync_enabled = false, наличие реакций независимо от записей PostAction является ожидаемым поведением.

1 лайк