[英]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.