diff --git a/app/models/group.rb b/app/models/group.rb index 6cc39fb1c6c..ccdb0fe6511 100644 --- a/app/models/group.rb +++ b/app/models/group.rb @@ -534,6 +534,16 @@ class Group < ActiveRecord::Base if user_attributes.present? User.where(id: user_ids).update_all(user_attributes) end + + # update group user count + Group.exec_sql <<-SQL.squish + UPDATE groups g + SET user_count = + (SELECT COUNT(gu.user_id) + FROM group_users gu + WHERE gu.group_id = g.id) + WHERE g.id = #{self.id}; + SQL end if self.grant_trust_level.present? diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 856b6fa0f52..23ccc1ca7b3 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -619,6 +619,13 @@ describe Group do expect(group.group_users.map(&:user_id)).to contain_exactly(user.id, admin.id) end + + it 'updates group user count' do + expect { + group.bulk_add([user.id, admin.id]) + group.reload + }.to change { group.user_count }.by(2) + end end it "Correctly updates has_messages" do