diff options
Diffstat (limited to 'app/models/member.rb')
-rw-r--r-- | app/models/member.rb | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/app/models/member.rb b/app/models/member.rb index 5228d1ffc..2dc91cba7 100644 --- a/app/models/member.rb +++ b/app/models/member.rb @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2009 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -17,15 +17,12 @@ class Member < ActiveRecord::Base belongs_to :user - belongs_to :role + has_many :member_roles, :dependent => :delete_all + has_many :roles, :through => :member_roles belongs_to :project - validates_presence_of :role, :user, :project + validates_presence_of :user, :project validates_uniqueness_of :user_id, :scope => :project_id - - def validate - errors.add :role_id, :invalid if role && !role.member? - end def name self.user.name @@ -42,11 +39,18 @@ class Member < ActiveRecord::Base end def <=>(member) - role == member.role ? (user <=> member.user) : (role <=> member.role) + a, b = roles.sort.first, member.roles.sort.first + a == b ? (user <=> member.user) : (a <=> b) end def before_destroy # remove category based auto assignments for this member IssueCategory.update_all "assigned_to_id = NULL", ["project_id = ? AND assigned_to_id = ?", project.id, user.id] end + + protected + + def validate + errors.add_to_base "Role can't be blank" if roles.empty? + end end |