diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2018-07-02 13:48:35 +0300 |
---|---|---|
committer | Yorick Peterse <yorickpeterse@gmail.com> | 2018-07-02 13:48:35 +0300 |
commit | 7e9f46d0dc1ed34d7e7cb7b6ee31d08f53f2deaf (patch) | |
tree | 0f12619ccec2515a452bbd4b24ae89ea5783cfd6 /app/models | |
parent | f25cdea64d69a97f31719622f9dead3de1ea0e11 (diff) | |
parent | 29e2e1888b30883644ecbab6ca63c9415a6ea3ac (diff) |
Merge branch 'dm-user-without-projects-performance' into 'master'
Improve performance of User.without_projects scope
Closes #48577
See merge request gitlab-org/gitlab-ce!20264
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/user.rb | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index 8e0dc91b2a7..48629c58490 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -244,7 +244,7 @@ class User < ActiveRecord::Base scope :blocked, -> { with_states(:blocked, :ldap_blocked) } scope :external, -> { where(external: true) } scope :active, -> { with_state(:active).non_internal } - scope :without_projects, -> { where('id NOT IN (SELECT DISTINCT(user_id) FROM members WHERE user_id IS NOT NULL AND requested_at IS NULL)') } + scope :without_projects, -> { joins('LEFT JOIN project_authorizations ON users.id = project_authorizations.user_id').where(project_authorizations: { user_id: nil }) } scope :todo_authors, ->(user_id, state) { where(id: Todo.where(user_id: user_id, state: state).select(:author_id)) } scope :order_recent_sign_in, -> { reorder(Gitlab::Database.nulls_last_order('current_sign_in_at', 'DESC')) } scope :order_oldest_sign_in, -> { reorder(Gitlab::Database.nulls_last_order('current_sign_in_at', 'ASC')) } |