Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 对于更改公共视图范围的上传图像,我应该如何处理rails资产管道?_Ruby On Rails_Image_Asset Pipeline - Fatal编程技术网

Ruby on rails 对于更改公共视图范围的上传图像,我应该如何处理rails资产管道?

Ruby on rails 对于更改公共视图范围的上传图像,我应该如何处理rails资产管道?,ruby-on-rails,image,asset-pipeline,Ruby On Rails,Image,Asset Pipeline,在阅读了rails如何处理图像资产后,我感到困惑,并且很难决定在我的应用程序目录树中保存上传的图像。如果用户已将图像上载到我的rails应用程序,我是否应将图像保存为路径/资产/图像/或/公共/图像 我的担忧/问题:如果我想允许用户在选择公开其图像时公开其图像,那么如果上载的图像“未发布”(仅当当前用户==image.owner时才提供图像),而不是位于公共图像/资产中,是否应该认为该图像更受保护?同等保护?不知何故保护得更少 我是否正确地假设,将资产管道用于图像的好处只是在生产模式下对文件名进

在阅读了rails如何处理图像资产后,我感到困惑,并且很难决定在我的应用程序目录树中保存上传的图像。如果用户已将图像上载到我的rails应用程序,我是否应将图像保存为路径/资产/图像/或/公共/图像

我的担忧/问题:如果我想允许用户在选择公开其图像时公开其图像,那么如果上载的图像“未发布”(仅当当前用户==image.owner时才提供图像),而不是位于公共图像/资产中,是否应该认为该图像更受保护?同等保护?不知何故保护得更少

我是否正确地假设,将资产管道用于图像的好处只是在生产模式下对文件名进行散列,仅此而已?就资源的服务方式而言,是否存在一些隐含的额外或减少的安全性?这更像是一个微妙的意见问题,还是rails公约在这里有什么要说的

谢谢

编辑1:
您将如何处理上载的内容,这些内容是您希望上载用户可以使用,但来宾或其他用户无法发现的?是否(可以?)在web_root下的树外存储上传的内容?

应用程序资产是属于应用程序的资产,例如背景和图标(对于图像)。资产管道与用户上传的图像无关。我建议将它们分开,如果需要,从单独的CDN提供它们

资产管道中的文件名散列仅在资产编译期间完成,因此特定图像的链接对于图像内容是唯一的。这有助于避免为图像和其他资产设置复杂的缓存头,因为当图像更改时,文件名也会更改,并且缓存的版本根本不会被使用


所有这些都不适用于用户上传的图像,您不会即时编译其图像的资产。

谢谢您的重新编写。所以你会建议把上传的图片保存在像/public/images/uploaded这样的地方?如果希望上传的图像可供上传用户使用,但公众无法发现,该怎么办?我不希望http请求www.mysite.com/images/上传到列表目录内容。然而,我希望rails提供来自同一位置的内容。我认为将上传的图像保存在web_根目录下的树之外是一个好主意,但这样看来,资源的路由似乎很复杂。