summaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/committership.rb6
-rw-r--r--app/models/membership.rb7
-rw-r--r--app/models/merge_request.rb9
3 files changed, 20 insertions, 2 deletions
diff --git a/app/models/committership.rb b/app/models/committership.rb
index a3d2907..b6f50b5 100644
--- a/app/models/committership.rb
+++ b/app/models/committership.rb
@@ -30,6 +30,8 @@ class Committership < ActiveRecord::Base
after_create :notify_repository_owners
after_create :add_new_committer_event
after_destroy :add_removed_committer_event
+ has_many :messages, :as => :notifiable
+ before_destroy :nullify_messages
named_scope :groups, :conditions => { :committer_type => "Group" }
named_scope :users, :conditions => { :committer_type => "User" }
@@ -84,4 +86,8 @@ class Committership < ActiveRecord::Base
repository.project.create_event(Action::REMOVE_COMMITTER, repository,
creator, committer.title)
end
+
+ def nullify_messages
+ messages.update_all({:notifiable_id => nil, :notifiable_type => nil})
+ end
end
diff --git a/app/models/membership.rb b/app/models/membership.rb
index 0db3088..d24ed8d 100644
--- a/app/models/membership.rb
+++ b/app/models/membership.rb
@@ -20,9 +20,10 @@ class Membership < ActiveRecord::Base
belongs_to :group
belongs_to :user
belongs_to :role
- has_many :messages, :as => :notifiable, :dependent => :destroy
+ has_many :messages, :as => :notifiable
before_validation_on_update :dont_demote_group_creator
before_destroy :dont_delete_group_creator
+ before_destroy :nullify_messages
after_create :send_notification_if_invited
attr_accessor :inviter
@@ -77,4 +78,8 @@ class Membership < ActiveRecord::Base
def dont_delete_group_creator
return user != group.creator
end
+
+ def nullify_messages
+ messages.update_all({:notifiable_id => nil, :notifiable_type => nil})
+ end
end
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 4462215..f524e16 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -25,9 +25,11 @@ class MergeRequest < ActiveRecord::Base
belongs_to :source_repository, :class_name => 'Repository'
belongs_to :target_repository, :class_name => 'Repository'
has_many :events, :as => :target, :dependent => :destroy
- has_many :messages, :as => :notifiable, :dependent => :destroy
+ has_many :messages, :as => :notifiable
has_many :comments, :as => :target, :dependent => :destroy
+ before_destroy :nullify_messages
+
is_indexed :fields => ["proposal"], :include => [{
:association_name => "user",
:field => "login",
@@ -360,4 +362,9 @@ class MergeRequest < ActiveRecord::Base
response = access_token.get("/")
return Net::HTTPSuccess === response
end
+
+ def nullify_messages
+ messages.update_all({:notifiable_id => nil, :notifiable_type => nil})
+ end
+
end