diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-12-11 14:17:11 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-12-11 14:17:11 +0100 |
commit | 9b9c62202c205e453de9fcaade9a5f598df4ba50 (patch) | |
tree | 393a4223ce2b712fcd4b00c976b9954a8a510ec1 /app/models/user.rb | |
parent | de7901ff59b9a4070b1355ecc2098b33e3674de9 (diff) | |
parent | 95daf62bef31f28525cd044716d4b336decdd97a (diff) | |
download | gitlab-ce-9b9c62202c205e453de9fcaade9a5f598df4ba50.tar.gz |
Merge branch 'master' into qa/gb/selenium-handle-domain-sessions
* master: (93 commits)
Diffstat (limited to 'app/models/user.rb')
-rw-r--r-- | app/models/user.rb | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/app/models/user.rb b/app/models/user.rb index af1c36d9c93..92b461ce3ed 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -315,6 +315,8 @@ class User < ActiveRecord::Base # # Returns an ActiveRecord::Relation. def search(query) + query = query.downcase + order = <<~SQL CASE WHEN users.name = %{query} THEN 0 @@ -324,8 +326,11 @@ class User < ActiveRecord::Base END SQL - fuzzy_search(query, [:name, :email, :username]) - .reorder(order % { query: ActiveRecord::Base.connection.quote(query) }, :name) + where( + fuzzy_arel_match(:name, query) + .or(fuzzy_arel_match(:username, query)) + .or(arel_table[:email].eq(query)) + ).reorder(order % { query: ActiveRecord::Base.connection.quote(query) }, :name) end # searches user by given pattern @@ -333,15 +338,17 @@ class User < ActiveRecord::Base # This method uses ILIKE on PostgreSQL and LIKE on MySQL. def search_with_secondary_emails(query) + query = query.downcase + email_table = Email.arel_table matched_by_emails_user_ids = email_table .project(email_table[:user_id]) - .where(Email.fuzzy_arel_match(:email, query)) + .where(email_table[:email].eq(query)) where( fuzzy_arel_match(:name, query) - .or(fuzzy_arel_match(:email, query)) .or(fuzzy_arel_match(:username, query)) + .or(arel_table[:email].eq(query)) .or(arel_table[:id].in(matched_by_emails_user_ids)) ) end @@ -1054,13 +1061,13 @@ class User < ActiveRecord::Base end def todos_done_count(force: false) - Rails.cache.fetch(['users', id, 'todos_done_count'], force: force) do + Rails.cache.fetch(['users', id, 'todos_done_count'], force: force, expires_in: 20.minutes) do TodosFinder.new(self, state: :done).execute.count end end def todos_pending_count(force: false) - Rails.cache.fetch(['users', id, 'todos_pending_count'], force: force) do + Rails.cache.fetch(['users', id, 'todos_pending_count'], force: force, expires_in: 20.minutes) do TodosFinder.new(self, state: :pending).execute.count end end |