posts: don't reparent children when expunging posts.
If an expunged post has children, just set their parent to null instead of reparenting them. Before we reparented them to the oldest child.
This commit is contained in:
@@ -920,14 +920,7 @@ class Post < ApplicationRecord
|
||||
end
|
||||
|
||||
def update_children_on_destroy
|
||||
return unless children.present?
|
||||
|
||||
eldest = children[0]
|
||||
siblings = children[1..-1]
|
||||
|
||||
eldest.update(parent_id: nil)
|
||||
Post.where(id: siblings).find_each { |p| p.update(parent_id: eldest.id) }
|
||||
# Post.where(id: siblings).update(parent_id: eldest.id) # XXX rails 5
|
||||
children.update(parent: nil)
|
||||
end
|
||||
|
||||
def update_parent_on_save
|
||||
|
||||
@@ -254,17 +254,6 @@ class PostTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
|
||||
should "reparent all children to the first child" do
|
||||
@p1.expunge!
|
||||
@c1.reload
|
||||
@c2.reload
|
||||
@c3.reload
|
||||
|
||||
assert_nil(@c1.parent_id)
|
||||
assert_equal(@c1.id, @c2.parent_id)
|
||||
assert_equal(@c1.id, @c3.parent_id)
|
||||
end
|
||||
|
||||
should "save a post version record for each child" do
|
||||
assert_difference(["@c1.versions.count", "@c2.versions.count", "@c3.versions.count"]) do
|
||||
@p1.expunge!
|
||||
@@ -273,11 +262,6 @@ class PostTest < ActiveSupport::TestCase
|
||||
@c3.reload
|
||||
end
|
||||
end
|
||||
|
||||
should "set the has_children flag on the new parent" do
|
||||
@p1.expunge!
|
||||
assert_equal(true, @c1.reload.has_children?)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user