Reduce SQL queries in the study groups controller

Fixes CODEOCEAN-Y7
This commit is contained in:
Sebastian Serth
2023-09-25 22:15:27 +02:00
parent a9d756171b
commit 684639696d
3 changed files with 8 additions and 5 deletions

View File

@ -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

View File

@ -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

View File

@ -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)