This is expected behaviour.

*Blob* models are intended to be immutable in spirit. One file, one blob. 
And if you want to do transformations of a given Blob, the idea is that 
you'll simply create a new one, rather than attempt to mutate the existing 
(though of course, you can delete that later if you don't need it). Because 
of this, you have 2 different Blobs in your test case.

*Checksum* is calculated from the content of the file(`data`), so  image `
*town.jpg*` will always produce the same checksum since it is the same 
image (not the same Blob :))

I hope this helps

On Friday, March 23, 2018 at 12:43:38 AM UTC+1, Dan Hanson wrote:
>
> I'm hoping to get some clarification on the expected behavior surrounding 
> uploading the same file multiple times using ActiveStorage.  Currently each 
> time the same file is uploaded a new ActiveStorage::Blob is created having 
> a unique key but a shared checksum.  This behavior surprised me but I'm 
> wondering if this is a bug or intended behavior.  The following test 
> illustrates how I was expecting AS to behave:
>
> # activestorage/test/models/attachments_test.rb
> test "attached blobs with same checksum are shared" do                   
>       
>   @user.avatar.attach io: StringIO.new("STUFF"), filename: "town.jpg", 
> content_type: "image/jpg"
>                                                                           
>         
>   second_user = User.create!                                             
>       
>   second_user.avatar.attach io: StringIO.new("STUFF"), filename: 
> "town.jpg", content_type: "image/jpg"
>                                                                           
>        
>   assert_equal @user.avatar.blob.checksum, second_user.avatar.blob.checksum 
>    
>   assert_equal @user.avatar.blob, second_user.avatar.blob # currently 
> fails                     
> end 
>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-core+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-core@googlegroups.com.
Visit this group at https://groups.google.com/group/rubyonrails-core.
For more options, visit https://groups.google.com/d/optout.

Reply via email to