chore: Delete related notifications if a conversation is deleted (#2592)
This commit is contained in:
parent
5726447e47
commit
ba547b3f60
4 changed files with 22 additions and 1 deletions
|
@ -61,6 +61,7 @@ class Conversation < ApplicationRecord
|
|||
|
||||
has_many :messages, dependent: :destroy, autosave: true
|
||||
has_one :csat_survey_response, dependent: :destroy
|
||||
has_many :notifications, as: :primary_actor, dependent: :destroy
|
||||
|
||||
before_create :set_bot_conversation
|
||||
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
class RemoveNotificationsWithoutPrimaryActor < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
deleted_ids = []
|
||||
Notification.where(primary_actor_type: 'Conversation').pluck(:primary_actor_id).uniq.each_slice(1000) do |id_list|
|
||||
deleted_ids << id_list - Conversation.where(id: id_list).pluck(:id)
|
||||
end
|
||||
Notification.where(primary_actor_type: 'Conversation', primary_actor_id: deleted_ids).destroy_all
|
||||
end
|
||||
end
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2021_06_23_155413) do
|
||||
ActiveRecord::Schema.define(version: 2021_07_08_140842) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "pg_stat_statements"
|
||||
|
|
|
@ -399,4 +399,15 @@ RSpec.describe Conversation, type: :model do
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#delete conversation' do
|
||||
let!(:conversation) { create(:conversation) }
|
||||
|
||||
let!(:notification) { create(:notification, notification_type: 'conversation_creation', primary_actor: conversation) }
|
||||
|
||||
it 'delete associated notifications if conversation is deleted' do
|
||||
conversation.destroy
|
||||
expect { notification.reload }.to raise_error ActiveRecord::RecordNotFound
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue