From 53e2abc0848728a777644ae5185ed219364af031 Mon Sep 17 00:00:00 2001 From: Nils Strelow Date: Tue, 17 Jan 2017 20:48:22 +0100 Subject: [PATCH] order users by profile.first_name --- app/controllers/users_controller.rb | 2 +- app/models/user.rb | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 987ade58..6b42b104 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -4,7 +4,7 @@ class UsersController < ApplicationController # GET /users def index - @users = User.all.paginate(:page => params[:page], :per_page => 5) + @users = User.with_profiles.paginate(:page => params[:page], :per_page => 5) if params[:search] @users = User.search(params[:search]).paginate(:page => params[:page], :per_page => 5) end diff --git a/app/models/user.rb b/app/models/user.rb index 14a739a8..e8874b63 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -111,7 +111,15 @@ def rejected_applications_count(event) # @param pattern to search for # @return [Array] all users with pattern in their name def self.search(pattern) - joins(:profile).where("profiles.first_name LIKE ? or profiles.last_name LIKE ?", - "%#{pattern}%", "%#{pattern}%") + with_profiles.where("profiles.first_name LIKE ? or profiles.last_name LIKE ?", "%#{pattern}%", "%#{pattern}%") + end + + # Provides access to profile information + # and orders users by first, last name and email (if user has no profile) + # + # @return [Array] all users including their profile information + def self.with_profiles() + joins("LEFT JOIN profiles ON users.id = profiles.user_id") + .order('profiles.first_name, profiles.last_name, users.email ASC') end end