Remove started sharing notifications where the contact doesn't exist

Before #6873 we deleted contacts when someone blocks a person, but we
didn't drop the notification for the started sharing event. In #6864
we try to get the contact for the notification, which is not there
anymore.

So we need to remove the notifications for the contacts that don't exit
anymore.
This commit is contained in:
Benjamin Neff 2016-08-20 20:37:16 +02:00
parent 08c6d485e4
commit 0e4c899307
2 changed files with 12 additions and 1 deletions

View file

@ -0,0 +1,11 @@
class RemoveStartedSharingNotificationsWithoutContact < ActiveRecord::Migration
class Notification < ActiveRecord::Base
end
def up
Notification.where(type: "Notifications::StartedSharing", target_type: "Person")
.joins("INNER JOIN people ON people.id = notifications.target_id")
.joins("LEFT OUTER JOIN contacts ON contacts.person_id = people.id")
.delete_all("contacts.id IS NULL")
end
end

View file

@ -11,7 +11,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20160813115514) do ActiveRecord::Schema.define(version: 20160820181334) do
create_table "account_deletions", force: :cascade do |t| create_table "account_deletions", force: :cascade do |t|
t.string "diaspora_handle", limit: 255 t.string "diaspora_handle", limit: 255