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:
		
					parent
					
						
							
								8f8c0fe88c
							
						
					
				
			
			
				commit
				
					
						d412147d02
					
				
			
		
					 2 changed files with 10 additions and 4 deletions
				
			
		|  | @ -341,9 +341,15 @@ class Account < ApplicationRecord | |||
| 
 | ||||
|   def save_with_optional_media! | ||||
|     save! | ||||
|   rescue ActiveRecord::RecordInvalid | ||||
|     self.avatar = nil | ||||
|     self.header = nil | ||||
|   rescue ActiveRecord::RecordInvalid => e | ||||
|     errors = e.record.errors.errors | ||||
|     errors.each do |err| | ||||
|       if err.attribute == :avatar | ||||
|         self.avatar = nil | ||||
|       elsif err.attribute == :header | ||||
|         self.header = nil | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|     save! | ||||
|   end | ||||
|  |  | |||
|  | @ -160,7 +160,7 @@ RSpec.describe Account, type: :model do | |||
|         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.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 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue