相关疑难解决方法(0)

获取磁盘上ActiveStorage文件的路径

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

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

例:

user.avatar.path
Run Code Online (Sandbox Code Playgroud)

在查看Active Storage Docs时,它似乎rails_blob_path可以解决问题.在查看它返回的内容之后,它没有提供文档的路径.因此,它返回此错误:

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

背景

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

对于回形针实现,我迭代了所选pdf附件的full_paths,并将load它们组合成合并的pdf:

attachment_paths.each {|att_path| report << CombinePDF.load(att_path)}
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails rails-activestorage

22
推荐指数
4
解决办法
9638
查看次数

如何使用活动存储读取 .xlsx 文件数据

我有这门课,我正在使用活动存储

class DataSheet < ApplicationRecord
  belongs_to :admin

  has_one_attached :excel_file
  after_save :create_user
end
Run Code Online (Sandbox Code Playgroud)

我知道有很多 gems creekwrite_xlsx_railsroo可以读取或写入 .xlsx 文件,但它们都需要文件物理位置。以前,我使用creek gem读取 .xlsx 文件,但我必须将该文件保存在本地。

class LocalFileUploader


attr_reader :file

    def initialize(file = nil)
        @file = file
    end

    def save
        file_path = Rails.root.join('storage', file.original_filename)
        IO.copy_stream(file.path, file_path)
      return file_path.to_s
    end

end
Run Code Online (Sandbox Code Playgroud)

现在我正在使用将 .xlsx 文件存储为二进制文件的主动存储。我无法找到将该文件作为 xlsx 文件读取的方法。虽然主动存储提供了下载方法来获取文件的二进制数据。

pry(#<DataSheet>)> self.excel_file
=> #<ActiveStorage::Attached::One:0x007f9db0607750
 @dependent=:purge_later,
 @name="excel_file",
 @record=#<DataSheet:0x007f9db811ba40 id: 3, admin_id: 1, created_at: Mon, 28 May 2018 …
Run Code Online (Sandbox Code Playgroud)

excel blob ruby-on-rails rails-activestorage ruby-on-rails-5.2

5
推荐指数
1
解决办法
2070
查看次数