diff --git a/app/controllers/study_groups_controller.rb b/app/controllers/study_groups_controller.rb index a4190d47..632e1717 100644 --- a/app/controllers/study_groups_controller.rb +++ b/app/controllers/study_groups_controller.rb @@ -7,20 +7,23 @@ class StudyGroupsController < ApplicationController def index @search = policy_scope(StudyGroup).ransack(params[:q]) - @study_groups = @search.result.includes(:consumer).order(:name).paginate(page: params[:page], per_page: per_page_param) + @study_groups_paginate = @search.result.includes(:consumer).order(:name).paginate(page: params[:page], per_page: per_page_param) + @study_groups = @study_groups_paginate.joins(:study_group_memberships) + .group(:id, :name, :external_id, :consumer_id, :created_at, :updated_at) + .select(:id, :name, :external_id, :consumer_id, :created_at, :updated_at, 'count(study_group_memberships.id) as user_count') authorize! end def show; end def edit - @members = StudyGroupMembership.where(user: @study_group.users, study_group: @study_group).includes(:user) + @members = @study_group.study_group_memberships.includes(:user) end def update myparams = study_group_params myparams[:external_users] = - StudyGroupMembership.find(myparams[:study_group_membership_ids].compact_blank).map(&:user) + @study_group.study_group_memberships.where(id: myparams[:study_group_membership_ids].compact_blank).includes(:user).map(&:user) myparams.delete(:study_group_membership_ids) update_and_respond(object: @study_group, params: myparams) end diff --git a/app/models/study_group.rb b/app/models/study_group.rb index 841f8377..5cbf7a23 100644 --- a/app/models/study_group.rb +++ b/app/models/study_group.rb @@ -19,7 +19,7 @@ class StudyGroup < ApplicationRecord end def user_count - study_group_memberships.distinct.count + attributes['user_count'] || study_group_memberships.size end def to_s diff --git a/app/views/study_groups/index.html.slim b/app/views/study_groups/index.html.slim index 088b904c..6ad5a239 100644 --- a/app/views/study_groups/index.html.slim +++ b/app/views/study_groups/index.html.slim @@ -9,4 +9,4 @@ h1 = StudyGroup.model_name.human(count: 2) = f.search_field(:name_cont, class: 'form-control', placeholder: t('activerecord.attributes.study_group.name')) = render('table', study_groups: @study_groups) -= render('shared/pagination', collection: @study_groups) += render('shared/pagination', collection: @study_groups_paginate)