更新 Active Storage 附件文件名 [英] Update Active Storage attachment filename

查看:41
本文介绍了更新 Active Storage 附件文件名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想知道如何更新 Active Storage 附件的文件名.

I want to know how to update the filename of an Active Storage attachment.

这是我现在正在尝试的:

Here's what I'm trying now:

2.5.1 :052 > attachment.filename                                                                                                                                                             
 => #<ActiveStorage::Filename:0x00007fb2926cf6a0 @filename="example.pdf">
# at this point the filename is example.pdf

2.5.1 :053 > attachment.update!(filename: 'foo.pdf')                                                                                              
   (0.2ms)  BEGIN                                                        
  Patient Load (0.5ms)  SELECT  "patients".* FROM "patients" WHERE "patients"."deleted_at" IS NULL AND "patients"."id" = $1 LIMIT $2  [["id", 40861], ["LIMIT", 1]]
   (0.2ms)  COMMIT                                                                                                                                                                           
 => true
# I update the filename to "foo.pdf" and the save is evidently successful

2.5.1 :054 > attachment.reload.filename                                                                                                                                                      
  ActiveStorage::Attachment Load (0.4ms)  SELECT  "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."id" = $1 LIMIT $2  [["id", 99], ["LIMI
T", 1]]                                                                                                                                             
  ActiveStorage::Blob Load (0.3ms)  SELECT  "active_storage_blobs".* FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = $1 LIMIT $2  [["id", 99], ["LIMIT", 1]]
 => #<ActiveStorage::Filename:0x00007fb292675308 @filename="example.pdf">   
# I reload the attachment and the filename reverts to what it was before

如您所见,我尝试的方法无效.如何更改文件名?

As you can see, what I'm trying isn't working. How can I change the filename?

推荐答案

我想通了:

attachment = ActiveStorage::Attachment.find(attachment_id)
attachment.blob.update!(filename: 'new_filename.pdf')

这篇关于更新 Active Storage 附件文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆