Index: lib/better_nested_set.rb =================================================================== --- lib/better_nested_set.rb (revision 75) +++ lib/better_nested_set.rb (working copy) @@ -471,6 +471,19 @@ new_parent = target[parent_col_name].nil? ? 'NULL' : target[parent_col_name] end + update_condition = "(#{scope_condition})" << + " AND (" << + "(#{left_col_name} BETWEEN #{a} AND #{b})" << + " OR " << + "(#{left_col_name} BETWEEN #{c} AND #{d})" << + " OR " << + "(#{right_col_name} BETWEEN #{a} AND #{b})" << + " OR " << + "(#{right_col_name} BETWEEN #{c} AND #{d})" << + " OR " << + "(#{self.class.primary_key} = #{self.id})" << + ")" + base_set_class.update_all("\ #{left_col_name} = CASE \ WHEN #{left_col_name} BETWEEN #{a} AND #{b} THEN #{left_col_name} + #{d - b} \ @@ -483,7 +496,7 @@ #{parent_col_name} = CASE \ WHEN #{self.class.primary_key} = #{self.id} THEN #{new_parent} \ ELSE #{parent_col_name} END", - scope_condition) + update_condition) self.reload target.reload end