Note that there are some explanatory texts on larger screens.

plurals
  1. PORails - Comments w acts_as_nested_set - When Deleting a Dependent Record is Deleting Destroy Data
    primarykey
    data
    text
    <p>I have the following Models:</p> <pre><code>class Group &lt; ActiveRecord::Base has_many :threads, :dependent =&gt; :destroy class Thread &lt; ActiveRecord::Base has_many :comments, :as =&gt; :commentable, :dependent =&gt; :destroy class Comment &lt; ActiveRecord::Base belongs_to :commentable, :polymorphic =&gt; true acts_as_nested_set </code></pre> <p>The issue I'm having is when a user deletes a group, all kinds of comments are being broken or deleted. I took a look at the logs and this is what's happening:</p> <pre><code>Comment Load (0.8ms) SELECT "comments".* FROM "comments" WHERE ("comments".commentable_id = 101 AND "comments".commentable_type = 'Thread') ORDER BY comments.created_at DESC AREL (0.9ms) DELETE FROM "comments" WHERE ("comments"."lft" &gt; 649 AND "comments"."rgt" &lt; 650) AREL (0.4ms) UPDATE "comments" SET "lft" = ("lft" - 2) WHERE ("lft" &gt; 650) AREL (0.5ms) UPDATE "comments" SET "rgt" = ("rgt" - 2) WHERE ("rgt" &gt; 650) AREL (0.2ms) DELETE FROM "comments" WHERE ("comments"."id" = 381) AREL (0.4ms) DELETE FROM "comments" WHERE ("comments"."lft" &gt; 645 AND "comments"."rgt" &lt; 646) AREL (0.4ms) UPDATE "comments" SET "lft" = ("lft" - 2) WHERE ("lft" &gt; 646) AREL (0.4ms) UPDATE "comments" SET "rgt" = ("rgt" - 2) WHERE ("rgt" &gt; 646) AREL (0.2ms) DELETE FROM "comments" WHERE ("comments"."id" = 380) AREL (0.3ms) DELETE FROM "comments" WHERE ("comments"."lft" &gt; 648 AND "comments"."rgt" &lt; 651) AREL (0.3ms) UPDATE "comments" SET "lft" = ("lft" - 4) WHERE ("lft" &gt; 651) AREL (0.3ms) UPDATE "comments" SET "rgt" = ("rgt" - 4) WHERE ("rgt" &gt; 651) AREL (0.2ms) DELETE FROM "comments" WHERE ("comments"."id" = 379) AREL (0.3ms) DELETE FROM "comments" WHERE ("comments"."lft" &gt; 644 AND "comments"."rgt" &lt; 647) AREL (0.4ms) UPDATE "comments" SET "lft" = ("lft" - 4) WHERE ("lft" &gt; 647) AREL (0.4ms) UPDATE "comments" SET "rgt" = ("rgt" - 4) WHERE ("rgt" &gt; 647) AREL (0.2ms) DELETE FROM "comments" WHERE ("comments"."id" = 378) AREL (0.4ms) DELETE FROM "comments" WHERE ("comments"."lft" &gt; 642 AND "comments"."rgt" &lt; 643) AREL (0.8ms) UPDATE "comments" SET "lft" = ("lft" - 2) WHERE ("lft" &gt; 643) AREL (0.4ms) UPDATE "comments" SET "rgt" = ("rgt" - 2) WHERE ("rgt" &gt; 643) AREL (0.2ms) DELETE FROM "comments" WHERE ("comments"."id" = 377) AREL (0.7ms) DELETE FROM "comments" WHERE ("comments"."lft" &gt; 641 AND "comments"."rgt" &lt; 652) AREL (0.9ms) UPDATE "comments" SET "lft" = ("lft" - 12) WHERE ("lft" &gt; 652) AREL (0.9ms) UPDATE "comments" SET "rgt" = ("rgt" - 12) WHERE ("rgt" &gt; 652) AREL (0.3ms) DELETE FROM "comments" WHERE ("comments"."id" = 376) AREL (0.4ms) DELETE FROM "threads" WHERE ("threads"."id" = 101) AREL (0.4ms) DELETE FROM "groups" WHERE ("groups"."id" = 57) </code></pre> <p>Is this normal behavior for acts as nested? I would have expect just the DELETE FROM COMMENTS where Comment.id = XXXX. But instead all this is going on and comment records are breaking.</p> <p>Has anyone seen this before?</p> <p>Thank you</p> <p><strong>UPDATE w What is being used to prevent deep nesting:</strong></p> <pre><code> after_save :ensure_max_nestedset_level def ensure_max_nestedset_level if self.level &gt; 2 self.move_to_child_of(parent.parent) end end </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload