diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-03-04 12:06:25 +0100 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-03-11 15:25:24 -0500 |
commit | ee75c49313127f53fe60a0701f40024b897a15e8 (patch) | |
tree | 048894c69e46e0a2ee4134aade7aed6565a667d7 /app/models/namespace.rb | |
parent | d7d5937531350283f6cbd68dead5750227e6d962 (diff) | |
download | gitlab-ce-ee75c49313127f53fe60a0701f40024b897a15e8.tar.gz |
Make Namespace.search case-insensitive
This ensures searching namespaces works exactly the same as searching
for any other resource.
Diffstat (limited to 'app/models/namespace.rb')
-rw-r--r-- | app/models/namespace.rb | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/app/models/namespace.rb b/app/models/namespace.rb index bdb33f37495..55842df1e2d 100644 --- a/app/models/namespace.rb +++ b/app/models/namespace.rb @@ -52,8 +52,18 @@ class Namespace < ActiveRecord::Base find_by("lower(path) = :path OR lower(name) = :path", path: path.downcase) end + # Searches for namespaces matching the given query. + # + # This method uses ILIKE on PostgreSQL and LIKE on MySQL. + # + # query - The search query as a String + # + # Returns an ActiveRecord::Relation def search(query) - where("name LIKE :query OR path LIKE :query", query: "%#{query}%") + t = arel_table + pattern = "%#{query}%" + + where(t[:name].matches(pattern).or(t[:path].matches(pattern))) end def clean_path(path) |