我需要获取磁盘上使用ActiveStorage的文件的路径.该文件存储在本地.

当我使用回形针时,我在附件上使用了path方法,返回了完整路径.

例子:

user.avatar.path

当看 Active Storage Docs的时候,看起来rails_blob_path就可以了.但是,在查看返回的内容后,它没有提供文档的路径.因此,它返回以下错误:

没有这样的文件或目录@rb_sysopen-

Background

我需要文档的路径,因为我使用的是combine_pdf gem,以便将多个pdf组合成一个pdf.

对于回形针的实现,我遍历了所选pdf附件的完整路径,并将其转换为组合pdf:

attachment_paths.each {|att_path| report << CombinePDF.load(att_path)}

推荐答案

多亏了@muistooshort在 comments 中的帮助,在查看了Active Storage Code之后,这一功能得以实现:

active_storage_disk_service = ActiveStorage::Service::DiskService.new(root: Rails.root.to_s + '/storage/')
active_storage_disk_service.send(:path_for, user.avatar.blob.key)
  # => returns full path to the document stored locally on disk

我觉得这个解决方案有点老套.我很想听听其他的解决方案.但这对我来说确实有用.

Ruby-on-rails相关问答推荐

我真正运行的是哪个 Ruby 版本?

带有 simple_form 的按钮内的 HTML 代码

Rails 模型方法 self.与普通

jbuilder vs rails-api/active_model_serializers 用于 Rails 4 中的 JSON 处理

耙路由错误缺少:路由定义上的操作键

从 Authlogic 迁移到 Devise

如何确定 Rails 是从 CLI、控制台还是作为服务器运行?

Postgres on Rails 致命:数据库不存在

判断 DateTime 值是今天、明天还是以后

在 Nokogiri 中获取属性值以提取链接 URL

RSpec > 有没有办法用一个命令运行所有测试?

如何在 Rails 中验证日期以使其在今天之后?

如何让 ActiveAdmin 使用强参数?

Django 还是 Ruby-On-Rails?

减go Ruby 中的日期并以分钟为单位得到差异

如何将 ActionMailer default_url_options 的 :host 动态设置为请求的主机名?

如何在 Rails 迁移中添加一些插入?

将 Rails 服务器绑定到 0.0.0.0 能给你带来什么?

您如何访问设计控制器?

错误:删除表违反外键约束.密钥 id 仍然从表中引用(很多)