Image processing 如何在rails 6中获取活动存储的tempfile路径

Image processing 如何在rails 6中获取活动存储的tempfile路径,image-processing,rails-activestorage,ruby-on-rails-6,Image Processing,Rails Activestorage,Ruby On Rails 6,我正在将rails 5.2升级到rails 6。下面是我的旧代码,其中object\u path我得到/tmp/image\u processing20191218-32740-qqg8h3.jpg 现在,随着图像魔法从活动存储器中移除,这个ImageProcessing::MiniMagick.source(path).call.to_path不起作用。有人知道另一种选择吗?在blob存储到DB之前,我需要这个路径 经过研究,我发现Rails 6将文件上传到存储器的时间改为实际保存记录的时间。

我正在将rails 5.2升级到rails 6。下面是我的旧代码,其中
object\u path
我得到
/tmp/image\u processing20191218-32740-qqg8h3.jpg

现在,随着图像魔法从活动存储器中移除,这个
ImageProcessing::MiniMagick.source(path).call.to_path
不起作用。有人知道另一种选择吗?在blob存储到DB之前,我需要这个路径

经过研究,我发现Rails 6将文件上传到存储器的时间改为实际保存记录的时间。这意味着在保存或验证之前不能以常规方式访问文件。如果您需要访问新上载的文件,可以获得如下文件引用:

record.attachment_changes['')。可附加
这将是待附加文件的临时文件

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
record.attachment_changes['<attributename>'].attachable