diff --git a/rails-2.0/app/models/project.rb b/rails-2.0/app/models/project.rb index 5788732d7..70b1eccd1 100644 --- a/rails-2.0/app/models/project.rb +++ b/rails-2.0/app/models/project.rb @@ -20,7 +20,7 @@ class Project < ActiveRecord::Base STATUS_ACTIVE = 1 STATUS_ARCHIVED = 9 - has_many :members, :dependent => :delete_all, :include => :user, :conditions => "#{User.table_name}.status=#{User::STATUS_ACTIVE}" + has_many :members, :include => :user, :conditions => "#{User.table_name}.status=#{User::STATUS_ACTIVE}" has_many :users, :through => :members has_many :custom_values, :dependent => :delete_all, :as => :customized has_many :enabled_modules, :dependent => :delete_all @@ -62,6 +62,8 @@ class Project < ActiveRecord::Base validates_length_of :identifier, :in => 3..20 validates_format_of :identifier, :with => /^[a-z0-9\-]*$/ + before_destroy :delete_all_members + def identifier=(identifier) super unless identifier_frozen? end @@ -129,6 +131,11 @@ class Project < ActiveRecord::Base children.select {|child| child.active?} end + # Deletes all project's members + def delete_all_members + Member.delete_all(['project_id = ?', id]) + end + # Users issues can be assigned to def assignable_users members.select {|m| m.role.assignable?}.collect {|m| m.user}.sort