Commit b040f857 authored by Benjamin Neff's avatar Benjamin Neff

Remove root_guid from reshares when post is deleted

And cleanup old reshares with deleted root posts

closes #7578
parent 0f771dbb
......@@ -5,6 +5,7 @@
* Remove Internet Explorer workarounds [#7557](https://github.com/diaspora/diaspora/pull/7557)
* Sort notifications by last interaction [#7568](https://github.com/diaspora/diaspora/pull/7568)
* Remove tiff support from photos [#7576](https://github.com/diaspora/diaspora/pull/7576)
* Remove reference from reshares when original post is deleted [#7578](https://github.com/diaspora/diaspora/pull/7578)
## Bug fixes
* Fix displaying polls with long answers [#7579](https://github.com/diaspora/diaspora/pull/7579)
......
......@@ -33,6 +33,10 @@ class Post < ApplicationRecord
self.touch(:interacted_at)
end
before_destroy do
reshares.update_all(root_guid: nil) # rubocop:disable Rails/SkipsModelValidations
end
#scopes
scope :includes_for_a_stream, -> {
includes(:o_embed_cache,
......
class CleanupRootGuidsFromReshares < ActiveRecord::Migration[5.1]
def up
# rubocop:disable Rails/SkipsModelValidations
Reshare.joins("LEFT OUTER JOIN posts as root ON root.guid = posts.root_guid")
.where("root.id is NULL AND posts.root_guid is NOT NULL")
.update_all(root_guid: nil)
# rubocop:enable Rails/SkipsModelValidations
end
end
......@@ -387,4 +387,13 @@ describe Post, :type => :model do
expect(post.interacted_at).not_to be_blank
end
end
describe "#before_destroy" do
it "removes root_guid from reshares" do
post = FactoryGirl.create(:status_message, author: alice.person, public: true)
reshare = FactoryGirl.create(:reshare, author: bob.person, root: post)
post.destroy!
expect(reshare.reload.root_guid).to be_nil
end
end
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment