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
|
def index
|
||||||
@search = policy_scope(StudyGroup).ransack(params[:q])
|
@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!
|
authorize!
|
||||||
end
|
end
|
||||||
|
|
||||||
def show; end
|
def show; end
|
||||||
|
|
||||||
def edit
|
def edit
|
||||||
@members = StudyGroupMembership.where(user: @study_group.users, study_group: @study_group).includes(:user)
|
@members = @study_group.study_group_memberships.includes(:user)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
myparams = study_group_params
|
myparams = study_group_params
|
||||||
myparams[:external_users] =
|
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)
|
myparams.delete(:study_group_membership_ids)
|
||||||
update_and_respond(object: @study_group, params: myparams)
|
update_and_respond(object: @study_group, params: myparams)
|
||||||
end
|
end
|
||||||
|
@ -19,7 +19,7 @@ class StudyGroup < ApplicationRecord
|
|||||||
end
|
end
|
||||||
|
|
||||||
def user_count
|
def user_count
|
||||||
study_group_memberships.distinct.count
|
attributes['user_count'] || study_group_memberships.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_s
|
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'))
|
= f.search_field(:name_cont, class: 'form-control', placeholder: t('activerecord.attributes.study_group.name'))
|
||||||
|
|
||||||
= render('table', study_groups: @study_groups)
|
= 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