Ruby on rails 带carrierwave的相同型号的动态存储目录

Ruby on rails 带carrierwave的相同型号的动态存储目录,ruby-on-rails,carrierwave,fog,Ruby On Rails,Carrierwave,Fog,我正在使用CarrierWave with fog将图像上载到S3 我有模型图像,可以代表不同大小的图像,并根据需要保存在不同的文件夹 例如,对于image.jpg,我可能有两个不同的上传版本,需要另存为: 'images/large/image.jpg' 'images/small/image.jpg' 可能有任意数量的用例,使用minimagick的版本无法涵盖所有用例 到目前为止,我还没有找到解决办法。有人知道怎么做吗?要更改上传文件的放置位置,只需覆盖store_dir方法:,以适合您

我正在使用CarrierWave with fog将图像上载到S3

我有模型图像,可以代表不同大小的图像,并根据需要保存在不同的文件夹

例如,对于image.jpg,我可能有两个不同的上传版本,需要另存为:

'images/large/image.jpg'
'images/small/image.jpg'
可能有任意数量的用例,使用minimagick的版本无法涵盖所有用例


到目前为止,我还没有找到解决办法。有人知道怎么做吗?

要更改上传文件的放置位置,只需覆盖store_dir方法:,以适合您的情况


这个问题我已经被问过好几次了,所以我会写下我的最终解决方案

我没有在模型上定义mount_uploader,而是决定单独使用uploader,稍后将URL保存到记录中

动态更改存储目录和文件名可以这样完成

uploader = Uploader.new

uploader.define_singleton_method(:store_dir) do
    'new_store_dir'
end
uploader.define_singleton_method(:filename) do
    'new_filename'
end

uploader.store!(image)
使用这种方法,您还可以使用局部变量或控制器中可用的任何内容定义名称


希望它也能帮助其他人。

我需要能够为每个图像提供不同的目录,这样版本名称就不会工作。我需要有3-4个不同的存储目录,并根据使用的文件字段选择要保存的存储目录,可能吗?如果在存储目录中,我只需编辑我的答案,您可以使用逻辑
uploader = Uploader.new

uploader.define_singleton_method(:store_dir) do
    'new_store_dir'
end
uploader.define_singleton_method(:filename) do
    'new_filename'
end

uploader.store!(image)