##// END OF EJS Templates
Sort members on the DB side....
Jean-Philippe Lang -
r15658:e22159a3cb72
parent child
Show More
@@ -31,6 +31,13 class Member < ActiveRecord::Base
31
31
32 scope :active, lambda { joins(:principal).where(:users => {:status => Principal::STATUS_ACTIVE})}
32 scope :active, lambda { joins(:principal).where(:users => {:status => Principal::STATUS_ACTIVE})}
33
33
34 # Sort by first role and principal
35 scope :sorted, lambda {
36 includes(:member_roles, :roles, :principal).
37 reorder("#{Role.table_name}.position").
38 order(Principal.fields_for_order_statement)
39 }
40
34 alias :base_reload :reload
41 alias :base_reload :reload
35 def reload(*args)
42 def reload(*args)
36 @managed_roles = nil
43 @managed_roles = nil
@@ -1,5 +1,5
1 <% roles = Role.find_all_givable
1 <% roles = Role.find_all_givable
2 members = @project.memberships.active.includes(:member_roles, :roles, :principal).to_a.sort %>
2 members = @project.memberships.active.sorted.to_a %>
3
3
4 <p><%= link_to l(:label_member_new), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %></p>
4 <p><%= link_to l(:label_member_new), new_project_membership_path(@project), :remote => true, :class => "icon icon-add" %></p>
5
5
@@ -38,6 +38,12 class MemberTest < ActiveSupport::TestCase
38 @jsmith = Member.find(1)
38 @jsmith = Member.find(1)
39 end
39 end
40
40
41 def test_sorted_scope_on_project_members
42 members = Project.find(1).members.sorted.to_a
43 roles = members.map {|m| m.roles.sort.first}
44 assert_equal roles, roles.sort
45 end
46
41 def test_create
47 def test_create
42 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
48 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
43 assert member.save
49 assert member.save
General Comments 0
You need to be logged in to leave comments. Login now