【问题标题】:How can I get the tempfile path of active storage in rails 6如何在 Rails 6 中获取活动存储的临时文件路径
【发布时间】:2019-12-18 10:40:46
【问题描述】:

我正在将我的 rails 5.2 升级到 rails 6。以下是我的旧代码,其中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】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多