Save avatar or header correctly even if other one fails (#18465)

* Save avatar or header correctly if other one fails

* Fix test
This commit is contained in:
Jeong Arm 2022-12-16 01:11:14 +09:00 committed by GitHub
parent 8f8c0fe88c
commit d412147d02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 4 deletions

View file

@ -341,9 +341,15 @@ class Account < ApplicationRecord
def save_with_optional_media! def save_with_optional_media!
save! save!
rescue ActiveRecord::RecordInvalid rescue ActiveRecord::RecordInvalid => e
self.avatar = nil errors = e.record.errors.errors
self.header = nil errors.each do |err|
if err.attribute == :avatar
self.avatar = nil
elsif err.attribute == :header
self.header = nil
end
end
save! save!
end end

View file

@ -160,7 +160,7 @@ RSpec.describe Account, type: :model do
expect(account.avatar_remote_url).to eq 'https://remote.test/invalid_avatar' expect(account.avatar_remote_url).to eq 'https://remote.test/invalid_avatar'
expect(account.header_remote_url).to eq expectation.header_remote_url expect(account.header_remote_url).to eq expectation.header_remote_url
expect(account.avatar_file_name).to eq nil expect(account.avatar_file_name).to eq nil
expect(account.header_file_name).to eq nil expect(account.header_file_name).to eq expectation.header_file_name
end end
end end
end end