Reduce SQL queries in the study groups controller
Fixes CODEOCEAN-Y7
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user