如何使用Carrierwave和Fog检查S3上是否存在图像版本?

cri*_*ken 10 ruby-on-rails amazon-s3 carrierwave fog

我用Carrierwave和Fog将我的图像上传到S3.在上传时,我还创建了图像的缩略图版本:

version :thumb do
  process :resize_to_limit => [90, 80], if: :is_resizable?
end
Run Code Online (Sandbox Code Playgroud)

现在我需要一种方法来检查缩略图版本是否存在.

文件列出了exists?方法.这实际上有效,如果我想检查原始版本的存在:

asset.file.exists? # => true
Run Code Online (Sandbox Code Playgroud)

但是当我使用像这样的"拇指"版本时:

asset.url(:thumb).file.exists?
Run Code Online (Sandbox Code Playgroud)

它得到:

undefined method 'exists?' for #<String:0x007fcd9f9d9620>:

cri*_*ken 18

用这个:

asset.thumb.file.exists?
Run Code Online (Sandbox Code Playgroud)

代替: asset.url(:thumb).file.exists?

  • 使用`version_exists?`不是一回事.`version_exists?`只检查上传者类本身是否定义了版本; 它不检查文件是否实际可用. (3认同)