投稿の編集で通知が発生する

あまり複雑にしたくありません。

このコードの一部を確認しました(@tshenry さん、リンクをありがとうございます)。それほど複雑にする必要はなさそうです。

現在のグループメンションはここ(78〜80 行目)でトリガーされています。expand_group_mentions() 関数は、グループメンションの通知を受け取るべきユーザーを生成するジェネレーターであり、SiteSetting.max_users_notified_per_group_mention のようなポリシーを尊重しています。

このロジックを置くのに最適な場所だと思われます。

create_notification 関数では、すでに同じタイプの通知を受け取っているユーザーに対しては通知を抑制しています。そのため、グループメンションを含む投稿を編集すると、新しいグループメンバーに対して通知がトリガーされます。実際にはグループの全ユーザーに対して通知が生成されますが、すでに通知を受け取っている人に対しては抑制されるのです。

私は同様のアプローチを提案します。つまり、expand_group_mentions() 関数を更新して、group_mentions テーブルにレコードが存在するグループを除外するようにします。

以下のようなイメージです(Ruby の構文に詳しくないため、ご容赦ください):

  def expand_group_mentions(groups, post)
    return unless post.user && groups

    Group.mentionable(post.user, include_public: false).where(id: groups.map(&:id)).each do |group|
      next if group.user_count >= SiteSetting.max_users_notified_per_group_mention

      # すでにメンションされているグループをチェック
      next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0

      yield group, group.users
    end

  end

ただし、これでは JIT 警告については何も解決しません。

この問題の解決に協力したいと考えています。ただ迷惑になっているだけなら、お知らせください :slight_smile: