diff --git a/app/models/account/data_transfer/action_text_rich_text_record_set.rb b/app/models/account/data_transfer/action_text_rich_text_record_set.rb index 44c6b7bd8..0ce2944af 100644 --- a/app/models/account/data_transfer/action_text_rich_text_record_set.rb +++ b/app/models/account/data_transfer/action_text_rich_text_record_set.rb @@ -57,11 +57,17 @@ class Account::DataTransfer::ActionTextRichTextRecordSet < Account::DataTransfer content.send(:attachment_nodes).each do |node| sgid = SignedGlobalID.parse(node["sgid"], for: ActionText::Attachable::LOCATOR_NAME) - record = sgid&.find - next if record&.account_id != account.id - node["gid"] = record.to_global_id.to_s - node.remove_attribute("sgid") + record = begin + sgid&.find + rescue ActiveRecord::RecordNotFound + nil + end + + if record&.account_id == account.id + node["gid"] = record.to_global_id.to_s + node.remove_attribute("sgid") + end end content.fragment.source.to_html @@ -74,11 +80,12 @@ class Account::DataTransfer::ActionTextRichTextRecordSet < Account::DataTransfer fragment.css("action-text-attachment[gid]").each do |node| gid = GlobalID.parse(node["gid"]) - next unless gid - record = gid.find - node["sgid"] = record.attachable_sgid - node.remove_attribute("gid") + if gid + record = gid.find + node["sgid"] = record.attachable_sgid + node.remove_attribute("gid") + end end fragment.to_html diff --git a/test/models/account/export_test.rb b/test/models/account/export_test.rb index 68f95c5a0..d449764b8 100644 --- a/test/models/account/export_test.rb +++ b/test/models/account/export_test.rb @@ -59,4 +59,21 @@ class Account::ExportTest < ActiveSupport::TestCase assert entry, "Expected blob file in zip" end end + + test "build succeeds when rich text references missing blob" do + blob = ActiveStorage::Blob.create_and_upload!( + io: file_fixture("moon.jpg").open, + filename: "moon.jpg", + content_type: "image/jpeg" + ) + card = cards(:logo) + card.update!(description: "") + ActiveStorage::Blob.where(id: blob.id).delete_all + + export = Account::Export.create!(account: Current.account, user: users(:david)) + + export.build + + assert export.completed? + end end