18 lines
637 B
Ruby
18 lines
637 B
Ruby
class Notification::RemoveDuplicateNotificationJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
def perform(notification)
|
|
return unless notification.is_a?(Notification)
|
|
|
|
user_id = notification.user_id
|
|
primary_actor_id = notification.primary_actor_id
|
|
|
|
# Find older notifications with the same user and primary_actor_id
|
|
duplicate_notifications = Notification.where(user_id: user_id, primary_actor_id: primary_actor_id)
|
|
.order(created_at: :desc)
|
|
|
|
# Skip the first one (the latest notification) and destroy the rest
|
|
duplicate_notifications.offset(1).each(&:destroy)
|
|
end
|
|
end
|