つまり、3 つのグループ言及を含む投稿を想像してみてください。それが編集され、4 つ目の言及が追加された場合です。
編集を保存する際、その投稿の現在のグループ言及リストを取得するために、以下のようなクエリを使用できます。
-- [params]
-- text :post_id
select gm.group_id, g.name
from group_mentions gm
join groups g on (gm.group_id = g.id)
where post_id = :post_id
その後、このクエリの結果と投稿内で言及されているグループのリストを比較することで、新しい言及(複数含む)を特定できます。
これは大した計算量ではないように思えますが、何か見落としているのかもしれません。また、これはバックグラウンドタスクで実行できる種類の処理にも思えます。
グループへの通知に関する JIT バナーについては、このロジックを API エンドポイント(/post/<id>/mentions.json)を通じて公開し、非同期でこのデータを取得できるようにする案もあります。