fix user search
This commit is contained in:
parent
df9cff0eee
commit
d071c5bba8
1 changed files with 9 additions and 2 deletions
|
@ -73,8 +73,15 @@ class User < ActiveRecord::Base
|
||||||
|
|
||||||
# search by (nick)name
|
# search by (nick)name
|
||||||
def self.natural_search(q)
|
def self.natural_search(q)
|
||||||
# we always use both nick and name, to make sure a user is found
|
q = q.strip
|
||||||
where("CONCAT(first_name, CONCAT(' ', last_name)) LIKE :q OR nick LIKE :q", q: "%#{q}%")
|
users = User.arel_table
|
||||||
|
# full string as nickname
|
||||||
|
match_nick = users[:nick].matches("%#{q}%")
|
||||||
|
# or each word matches either first or last name
|
||||||
|
match_name = q.split.map do |a|
|
||||||
|
users[:first_name].matches("%#{a}%").or users[:last_name].matches("%#{a}%")
|
||||||
|
end.reduce(:and)
|
||||||
|
User.where(match_nick.or match_name)
|
||||||
end
|
end
|
||||||
|
|
||||||
def locale
|
def locale
|
||||||
|
|
Loading…
Reference in a new issue