我将Rails 5.2升级到Rails6。以下是我的旧代码,其中
object_path
我得到/tmp/image_processing20191218-32740-qqg8h3.jpg
def load_image_path(key)
if %w[development test].include? Rails.env
path = ActiveStorage::Blob.service.send(:path_for, key)
object_path = ImageProcessing::MiniMagick.source(path).call.to_path
else
object = S3.new.bucket.object key
object_path = object.presigned_url(:get)
end
object_path
end
现在将图像魔术从活动存储中删除后,此
ImageProcessing::MiniMagick.source(path).call.to_path
不起作用。有人知道替代品吗?在将Blob存储在数据库中之前,我需要此路径
经过研究发现,Rails 6将文件上传到存储的时间更改为实际保存记录的时间。这意味着before_save或验证无法以常规方式访问文件。如果您需要访问新上传的文件,则可以获取如下文件参考:
record.attachment_changes['<attributename>'].attachable
这将是要附加文件的临时文件。