これらのエンドポイントが実行されると、バッジ集計及び獲得したバッジ情報が永続化される設計になっています。 新しいバッジを獲得したかどうかは、集計結果を基に獲得できるバッジの閾値の最大値と、ユーザーが保持しているバッジの閾値(threshold)を比較し、ユーザーがまだそのバッジを保持していなければ新しいバッジとして獲得します。 def set_new_child_badge(user, user_has_badge) threshold = aggregate_badge(user) new_child_badge = self.badges.select { |b| b.is_acquired?(threshold) }.max {|a, b| a.threshold <=> b.threshold } current_badge_id = user_has_badge.send(sel