diff --git a/app/controllers/paginable/orgs_controller.rb b/app/controllers/paginable/orgs_controller.rb index 252f352d54..1551dccaeb 100644 --- a/app/controllers/paginable/orgs_controller.rb +++ b/app/controllers/paginable/orgs_controller.rb @@ -10,7 +10,7 @@ def index authorize(Org) paginable_renderise( partial: 'index', - scope: Org.with_template_and_user_counts, + scope: Org.with_template_count_and_associations_check, query_params: { sort_field: 'orgs.name', sort_direction: :asc }, format: :json ) diff --git a/app/controllers/super_admin/orgs_controller.rb b/app/controllers/super_admin/orgs_controller.rb index 18fc1fa4b9..1fc1645bb9 100644 --- a/app/controllers/super_admin/orgs_controller.rb +++ b/app/controllers/super_admin/orgs_controller.rb @@ -11,7 +11,7 @@ class OrgsController < ApplicationController def index authorize Org render 'index', locals: { - orgs: Org.with_template_and_user_counts.page(1) + orgs: Org.with_template_count_and_associations_check.page(1) } end diff --git a/app/models/org.rb b/app/models/org.rb index b56a40e0b1..d125d17cbe 100644 --- a/app/models/org.rb +++ b/app/models/org.rb @@ -196,13 +196,14 @@ def self.default_orgs } # Scope used in several controllers - scope :with_template_and_user_counts, lambda { - joins('LEFT OUTER JOIN templates ON orgs.id = templates.org_id') - .joins('LEFT OUTER JOIN users ON orgs.id = users.org_id') + scope :with_template_count_and_associations_check, lambda { + left_outer_joins(:templates) .group('orgs.id') .select("orgs.*, count(distinct templates.family_id) as template_count, - count(users.id) as user_count") + EXISTS (SELECT 1 FROM users WHERE users.org_id = orgs.id) OR + EXISTS (SELECT 1 FROM contributors WHERE contributors.org_id = orgs.id) OR + EXISTS (SELECT 1 FROM plans WHERE plans.org_id = orgs.id) as has_associations") } # EVALUATE CLASS AND INSTANCE METHODS BELOW diff --git a/app/views/paginable/orgs/_index.html.erb b/app/views/paginable/orgs/_index.html.erb index 3d086b07b3..0f88995a7b 100644 --- a/app/views/paginable/orgs/_index.html.erb +++ b/app/views/paginable/orgs/_index.html.erb @@ -31,7 +31,7 @@