我正在使用 CarrierWave 将图像保存到 S3。在上传之前,图像被重命名为随机字符串。现在为了更快地查找,我想将文件放在以文件名的前两个字母命名的目录中。但是这样做,Rails 中止了stack level too deep
.
所以我假设调用#{model.image[0, 2]
会导致无限递归。有没有办法将文件名作为字符串访问?或者更简单的解决方案?
这是上传者:
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"images/#{model.image[0, 2]}/"
end
def filename
"#{secure_token}.#{file.extension}" if original_filename.present?
end
protected
def secure_token
var = :"@#{mounted_as}_secure_token"
model.instance_variable_get(var) or model.instance_variable_set(var, SecureRandom.hex(8))
end
end