@@ -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. |
|
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