PERF: remove N+1 query from assign

Also makes looking for allowed groups much more
efficient
This commit is contained in:
Sam Saffron 2019-06-05 11:03:29 +10:00
parent f312ece4a9
commit fe746fefc0
1 changed files with 7 additions and 2 deletions

View File

@ -49,8 +49,13 @@ after_initialize do
reviewable_api_enabled = defined?(Reviewable)
add_to_class(:user, :can_assign?) do
allowed_groups = SiteSetting.assign_allowed_on_groups.split('|')
(groups.pluck(:name) & allowed_groups).present?
@can_assign ||=
begin
allowed_groups = SiteSetting.assign_allowed_on_groups.split('|').compact
allowed_groups.present? && groups.where('name in (?)', allowed_groups).exists? ?
:true : :false
end
@can_assign == :true
end
add_to_class(:guardian, :can_assign?) { user && user.can_assign? }