diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/committership.rb | 6 | ||||
-rw-r--r-- | app/models/membership.rb | 7 | ||||
-rw-r--r-- | app/models/merge_request.rb | 9 |
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 |