これは、discourse_reactions_like_sync_enabled が false に設定されているためです。これは、既存のデータへの影響を避けるために、2024年5月からの移行によって意図的に行われました。
この設定が無効になっている場合、ReactionLikeSynchronizer は実行されません。この同期機能は以下を担当しています。
- リアクションの
PostAction(いいね)レコードを作成する - リアクションを反映するように
posts.like_countを更新する
同期が実行されない場合:
discourse_reactions_reaction_usersにリアクションが存在する- しかし、対応する
PostActionレコードがない - そして
posts.like_countは 0 のままである
タイミングに関するあなたの直感は的を射ています。2023年/2024年初頭の投稿は、この同期がアクティブでなかったときにリアクションが追加されたため、その like_count は更新されませんでした。古いシリアライザーロジックは、count = 0 かつ can_act = false(取り消しウィンドウが期限切れ)の場合、いいねアクションを完全に省略していました。
修正は根本的なデータ不一致を修正するものではなく、PostAction/like_count データが同期されていない場合でも、UI がリアクションを正しく表示されるようにするだけです。discourse_reactions_like_sync_enabled = false のサイトでは、PostAction レコードとは独立して存在するリアクションは予期された動作です。