Project

General

Profile

Actions

Defect #38966

closed

Attachment custom fields not removed when issue is deleted

Added by salman mp over 1 year ago. Updated about 2 months ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Attachments
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed
Affected version:

Description

Hi
Attachments of an issue that are related to custom fields of type attachment, get not deleted after issue deletion.


Files

Actions #1

Updated by Go MAEDA over 1 year ago

  • Status changed from New to Confirmed
Actions #2

Updated by salman mp over 1 year ago

As a suggestion, this patch removed attachment custom values before customizable destroy.

Actions #3

Updated by Takenori TAKAKI over 1 year ago

I would like to propose a patch and test code to delete the Attachment after the custom value has been removed.

Actions #4

Updated by salman mp over 1 year ago

Takenori TAKAKI wrote in #note-3:

I would like to propose a patch and test code to delete the Attachment after the custom value has been removed.

Thanks. It's better than mine.

Actions #5

Updated by Takenori TAKAKI over 1 year ago

salman mp wrote in #note-4:

Takenori TAKAKI wrote in #note-3:

I would like to propose a patch and test code to delete the Attachment after the custom value has been removed.

Thanks. It's better than mine.

Thanks salman mp ! Looks like we both had the same idea around the same time. Really appreciate your feedback!

Actions #6

Updated by Go MAEDA 12 months ago

  • Target version set to Candidate for next major release

Thank you for posting the fix. Should we add a migration to delete orphaned objects?

Actions #7

Updated by salman mp 12 months ago

Go MAEDA wrote in #note-6:

Thank you for posting the fix. Should we add a migration to delete orphaned objects?

Good idea. Because, if that orphaned objects not destroyed here, no one will destroy them in the future even by attachment:prune rake task.

It this sufficient?

class RemoveOrphanedCustomValueAttachments < ActiveRecord::Migration[6.1]
  def up
    Attachment.where(container_type: "CustomValue").each do |a|
      a.destroy! if a.container.nil?
    end
  end

  def down
    # no-op
  end
end
Actions #8

Updated by Go MAEDA 7 months ago

salman mp, thank you for posting the migration file.

I think the attached migration is more efficient than iterating over all attachments returned by Attachment.where(container_type: "CustomValue").

Actions #9

Updated by Go MAEDA 7 months ago

  • Target version changed from Candidate for next major release to 6.0.0

Setting the target version to 6.0.0.

Actions #10

Updated by Go MAEDA 2 months ago

I have updated the patch:

  • Added a migration to delete orphaned attachments
  • Changed callback method names to be more descriptive
  • Removed a loop from destroy_custom_value_attachments for improved efficiency
Actions #11

Updated by Takenori TAKAKI 2 months ago

Go MAEDA
I have confirmed the patch.
The added migration, proper naming and loop removal would be good!

Actions #12

Updated by Go MAEDA about 2 months ago

  • Subject changed from Attachments custom fields not removed when issue deleted to Attachment custom fields not removed when issue is deleted
  • Status changed from Confirmed to Closed
  • Assignee set to Go MAEDA
  • Resolution set to Fixed

Committed the fix in r23161. Thank you for your contribution.

Actions

Also available in: Atom PDF