[英]Do not nest files in rails active storage
默認情況下,Rails Active Storage 似乎通過關聯的active_storage_blob
key
嵌套您上傳的文件。
默認行為的規則如下所示。 在<Rails.root>/storage/
目錄中:
key
的前兩個字符並創建一個目錄
key
的下兩個字符並創建另一個目錄
key
例如:特定文件的關聯active_storage_blob
的key
是: 2HadGpe3G4r5ygdgdfh5534346 ,它看起來像下面這樣:
我不想要這種嵌套行為。 我想將文件平面存儲在存儲目錄中。 所以我只是想讓它看起來像這樣:
我怎樣才能做到這一點? 谷歌搜索和通讀Active Storage Rails 指南並沒有找到解決方案。
也只是出於好奇:為什么這是默認行為?
在 ActiveStorage DiskService 的代碼中挖掘,我找到了生成文件夾結構的代碼。 所有都方便地包含在一個函數中:
def folder_for(key)
[ key[0..1], key[2..3] ].join("/")
end
這可以通過一個簡單的補丁輕松消除兩個字母的子文件夾結構:
module ActiveStorage
class Service::DiskService < Service
private
def folder_for(key)
""
end
end
end
最好對這個補丁做一些測試,但據我所知它應該可以正常工作。
僅通過查看 DiskService 代碼我無法確定第二個問題的答案。 這個文件夾結構沒有任何線索,所以原因可能在別處。 它可能完全出於美觀目的而完成,以避免在大型服務器上出現巨大的單個文件夾 blob。 也許知道的人可以評論一下。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.