diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index e36a6a4f0..883976311 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -2,12 +2,8 @@ class Admin::UsersController < Admin::BaseController load_and_authorize_resource def index - if params[:search] - s = params[:search] - @users = User.where("username ILIKE ? OR email ILIKE ? OR document_number ILIKE ?", "%#{s}%", "%#{s}%", "%#{s}%").page(params[:page]) - else - @users = @users.page(params[:page]) - end + @users = User.by_username_email_or_document_number(params[:search]) if params[:search] + @users = @users.page(params[:page]) respond_to do |format| format.html format.js diff --git a/app/models/user.rb b/app/models/user.rb index 527ae3abc..25f0d8c37 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -64,6 +64,10 @@ class User < ActiveRecord::Base scope :public_for_api, -> { all } scope :by_comments, ->(query, topics_ids) { joins(:comments).where(query, topics_ids).uniq } scope :by_authors, ->(author_ids) { where("users.id IN (?)", author_ids) } + scope :by_username_email_or_document_number, ->(search_string) do + string = "%#{search_string}%" + where("username ILIKE ? OR email ILIKE ? OR document_number ILIKE ?", string, string, string) + end before_validation :clean_document_number