我如何在Rails 6中获得活动存储的临时文件路径

问题描述 投票:0回答:1

我将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存储在数据库中之前,我需要此路径

image-processing rails-activestorage ruby-on-rails-6
1个回答
0
投票

经过研究发现,Rails 6将文件上传到存储的时间更改为实际保存记录的时间。这意味着before_save或验证无法以常规方式访问文件。如果您需要访问新上传的文件,则可以获取如下文件参考:

record.attachment_changes['<attributename>'].attachable

这将是要附加文件的临时文件。

© www.soinside.com 2019 - 2024. All rights reserved.