1
0
mirror of https://github.com/meineerde/redmine.git synced 2025-12-19 15:01:14 +00:00

Sort members on the DB side.

git-svn-id: http://svn.redmine.org/redmine/trunk@16040 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2016-12-03 08:26:08 +00:00
parent 8aa6089171
commit e22159a3cb
3 changed files with 14 additions and 1 deletions

View File

@ -31,6 +31,13 @@ class Member < ActiveRecord::Base
scope :active, lambda { joins(:principal).where(:users => {:status => Principal::STATUS_ACTIVE})}
# Sort by first role and principal
scope :sorted, lambda {
includes(:member_roles, :roles, :principal).
reorder("#{Role.table_name}.position").
order(Principal.fields_for_order_statement)
}
alias :base_reload :reload
def reload(*args)
@managed_roles = nil

View File

@ -1,5 +1,5 @@
<% roles = Role.find_all_givable
members = @project.memberships.active.includes(:member_roles, :roles, :principal).to_a.sort %>
members = @project.memberships.active.sorted.to_a %>
<p><%= link_to l(:label_member_new), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %></p>

View File

@ -38,6 +38,12 @@ class MemberTest < ActiveSupport::TestCase
@jsmith = Member.find(1)
end
def test_sorted_scope_on_project_members
members = Project.find(1).members.sorted.to_a
roles = members.map {|m| m.roles.sort.first}
assert_equal roles, roles.sort
end
def test_create
member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
assert member.save