From 496e08393a5cc737fc82931fcb41aed53d61dfe7 Mon Sep 17 00:00:00 2001 From: jomo Date: Mon, 3 Jul 2017 03:05:10 +0200 Subject: fix user search --- app/models/user.rb | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/app/models/user.rb b/app/models/user.rb index d755646..3743136 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -174,23 +174,19 @@ class User < ActiveRecord::Base def set_email_token self.email_token ||= SecureRandom.hex(16) end - + def self.search (search, role, badge, staff) + users = User.joins(:role) if role - if staff - users = User.joins(:role).where("roles.value >= ?", Role.get(:mod).to_i) - else - users = User.joins(:role).where(role: role) - end + users = staff ? users.where("roles.value >= ?", Role.get(:mod).to_i) : users.where(role: role) end - if badge - users = User.joins(:badge).where(badge: badge) - else - users = User.joins(:role).all.where.not(id: User.first.id) + users = users.where(badge: badge) if badge + if search + search_san = User.send(:sanitize_sql_like, search.to_s) + users = users.where("users.name like ? OR ign like ?", "%#{search_san}%", "%#{search_san}%") end - search_san = User.send(:sanitize_sql_like, search.to_s) - users = users.where("users.name like ? OR ign like ?", "%#{search_san}%", "%#{search_san}%") - users = users.order("roles.value desc", "confirmed desc", :name) unless badge + users = users.where.not(id: User.first.id) unless [search, role, badge].any? + users = users.order("roles.value desc", "confirmed desc", :name) users end end -- cgit v1.2.3