##// 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 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 41 alias :base_reload :reload
35 42 def reload(*args)
36 43 @managed_roles = nil
@@ -1,5 +1,5
1 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 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 38 @jsmith = Member.find(1)
39 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 47 def test_create
42 48 member = Member.new(:project_id => 1, :user_id => 4, :role_ids => [1, 2])
43 49 assert member.save
General Comments 0
You need to be logged in to leave comments. Login now