mirror of
https://github.com/discourse/discourse.git
synced 2025-03-28 16:45:41 +08:00
Return User objects instead of hashes
This commit is contained in:
parent
1cd565ec0d
commit
5b01ac9288
@ -294,7 +294,8 @@ class UsersController < ApplicationController
|
|||||||
|
|
||||||
results = UserSearch.search term, topic_id
|
results = UserSearch.search term, topic_id
|
||||||
|
|
||||||
render :json => results
|
render json: { users: results.as_json( only: [ :username, :name ],
|
||||||
|
methods: :avatar_template ) }
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -1,15 +1,11 @@
|
|||||||
class UserSearch
|
class UserSearch
|
||||||
|
|
||||||
def self.search term, topic_id
|
def self.search term, topic_id
|
||||||
sql = sql term, topic_id
|
User.find_by_sql sql(term, topic_id)
|
||||||
results = User.exec_sql(sql, topic_id: topic_id, term_like: "#{term}%", term: term)
|
|
||||||
results = results.map do |r|
|
|
||||||
r["avatar_template"] = User.avatar_template(r["email"])
|
|
||||||
r.delete("email")
|
|
||||||
r
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
def self.sql term, topic_id
|
def self.sql term, topic_id
|
||||||
sql = "select username, name, email from users u "
|
sql = "select username, name, email from users u "
|
||||||
if topic_id
|
if topic_id
|
||||||
@ -36,7 +32,12 @@ class UserSearch
|
|||||||
end
|
end
|
||||||
|
|
||||||
sql << " case when last_seen_at is null then 0 else 1 end desc, last_seen_at desc, username asc limit(20)"
|
sql << " case when last_seen_at is null then 0 else 1 end desc, last_seen_at desc, username asc limit(20)"
|
||||||
sql
|
|
||||||
|
sanitize_sql_array(sql, topic_id: topic_id, term_like: "#{term}%", term: term)
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.sanitize_sql_array *args
|
||||||
|
ActiveRecord::Base.send(:sanitize_sql_array, args)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
Loading…
x
Reference in New Issue
Block a user