在阅读了rails如何处理图像资产之后,我感到很困惑,并且无法确定在我的应用程序目录树中保存上传图像的位置。如果用户已将图像上传到我的rails应用程序,我应该制作image_save_path / assets / images /或/ public / images吗?
我的疑虑/问题:如果我想允许用户在选择时公开他们的图片,那么上传的图片是否为“未发布”(图片仅在current_user == image.owner时提供)如果它位于资产/图像而不是公共/图像中,则被视为更受保护?同样受到保护?不知怎的保护少了?
我是否正确地假设使用图像资产管道的好处只是文件名在生产模式中被散列,那就是它?在如何提供资源方面,是否存在一些隐含的额外或减少的安全性?这更像是一个微妙的意见问题还是轨道惯例在这里有什么要说的?
谢谢!
EDIT1: 您将如何处理要向上传用户提供的上传内容,但不能向访客或其他用户发现?应该(可以?)一个商店在web_root下的树外部上传内容吗?
答案 0 :(得分:0)
应用程序资产是属于应用程序的资产,例如背景和图标(如果是图像)。资产管道与用户上传的图像无关。我建议将它们分开,如果需要,可以从单独的CDN服务。
资产管道中的文件名散列仅在资产编译期间完成,因此指向特定图像的链接对于图像内容是唯一的。这有助于避免为图像和其他资源设置复杂的缓存标头,如图像更改时,文件名也会更改,并且根本不会使用缓存版本。
所有这些都不适用于用户上传的图像,您不会即时编译其图像的资源。