Allows multiple roles on the same project (#706). Prerequisite for user groups feature.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2726 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang
2009-05-10 10:54:31 +00:00
parent 814e138c2a
commit 7dccf9fda6
65 changed files with 340 additions and 175 deletions
+13 -9
View File
@@ -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