Remove root_guid from reshares when post is deleted
And cleanup old reshares with deleted root posts closes #7578
This commit is contained in:
parent
0f771dbb10
commit
b040f85790
4 changed files with 23 additions and 0 deletions
|
|
@ -5,6 +5,7 @@
|
||||||
* Remove Internet Explorer workarounds [#7557](https://github.com/diaspora/diaspora/pull/7557)
|
* 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)
|
* 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 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
|
## Bug fixes
|
||||||
* Fix displaying polls with long answers [#7579](https://github.com/diaspora/diaspora/pull/7579)
|
* 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)
|
self.touch(:interacted_at)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
before_destroy do
|
||||||
|
reshares.update_all(root_guid: nil) # rubocop:disable Rails/SkipsModelValidations
|
||||||
|
end
|
||||||
|
|
||||||
#scopes
|
#scopes
|
||||||
scope :includes_for_a_stream, -> {
|
scope :includes_for_a_stream, -> {
|
||||||
includes(:o_embed_cache,
|
includes(:o_embed_cache,
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
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
|
expect(post.interacted_at).not_to be_blank
|
||||||
end
|
end
|
||||||
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
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue