diff --git a/app/controllers/story_ideas_controller.rb b/app/controllers/story_ideas_controller.rb index 3dcd18424..63607d43b 100644 --- a/app/controllers/story_ideas_controller.rb +++ b/app/controllers/story_ideas_controller.rb @@ -87,9 +87,9 @@ def set_form_variables @windows_types = WindowsType.all @workshops = Workshop.order(:title) - @users = User.active.includes(:person) + @users = User.active @users = @users.or(User.where(id: @story_idea.created_by_id)) if @story_idea&.created_by_id - @users = @users.distinct.order("people.first_name, people.last_name") + @users = @users.distinct.ordered_by_name @story_idea.build_primary_asset if @story_idea.primary_asset.blank? @story_idea.gallery_assets.build end diff --git a/app/controllers/workshop_ideas_controller.rb b/app/controllers/workshop_ideas_controller.rb index 9dd9cf95f..6f70f78c5 100644 --- a/app/controllers/workshop_ideas_controller.rb +++ b/app/controllers/workshop_ideas_controller.rb @@ -68,18 +68,18 @@ def destroy # Optional hooks for setting variables for forms or index def set_form_variables - @age_ranges = Category.includes(:category_type).where("category_types.name = 'AgeRange'").pluck(:name) + @age_ranges = Category.joins(:category_type).where(category_types: { name: "AgeRange" }).pluck(:name) @potential_series_workshops = Workshop.published.order(:title) @sectors = Sector.published @windows_types = WindowsType.all @categories_grouped = Category - .includes(:category_type) + .joins(:category_type) + .where(category_types: { published: true }) .published .order(:position, :name) .group_by(&:category_type) - .select { |type, _| type.nil? || type.published? } - .sort_by { |type, _| type&.name.to_s.downcase } + .sort_by { |type, _| type.name.downcase } @workshop_idea.build_primary_asset if @workshop_idea.primary_asset.blank? @workshop_idea.gallery_assets.build end diff --git a/app/controllers/workshop_variation_ideas_controller.rb b/app/controllers/workshop_variation_ideas_controller.rb index 0938a3231..57ba8e813 100644 --- a/app/controllers/workshop_variation_ideas_controller.rb +++ b/app/controllers/workshop_variation_ideas_controller.rb @@ -89,7 +89,8 @@ def set_form_variables @organizations = authorized_scope(Organization.all).order(:name) @windows_types = WindowsType.order(:name) @users = User.active.or(User.where(id: @workshop_variation_idea.created_by_id)) - .order(:first_name, :last_name) + .distinct + .ordered_by_name end def workshop_variation_idea_params diff --git a/app/models/user.rb b/app/models/user.rb index 471724c0b..4ce0ebdc2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -66,6 +66,9 @@ class User < ApplicationRecord end scope :active, -> { where(inactive: false) } + scope :ordered_by_name, -> { + left_joins(:person).order(Arel.sql("COALESCE(people.first_name, users.first_name), COALESCE(people.last_name, users.last_name)")) + } def self.search_by_params(params) results = is_a?(ActiveRecord::Relation) ? self : all