【问题标题】:Rails file storage with generate/download/upload and state带有生成/下载/上传和状态的 Rails 文件存储
【发布时间】:2015-01-05 12:51:50
【问题描述】:

我的网络平台帮助我们的协会管理项目。很多文档是平台自动生成的,然后我们的会员需要自己生成,最终下载-检查-重新上传。我们还需要跟踪不同的信息,例如签名日期、阅读日期等。

目前,使用基类来表示此类文档,然后继承该基类以定义我们使用的每种文档类型(例如文档是否可自动生成,可以上传等)。这些文件需要存储在 rails app 文件夹之外。每个继承的类中都定义了完整的文件名/路径/生成

有没有一种简单的方法可以使用回形针/carrierwave 来实现这一点?还是我应该自己实现这个(最终从上述 gem 的源代码中获得一些灵感?)

恐怕这些宝石对于我想做的事情来说可能太有限了。例如:自动生成文件时,最终现有文件将被覆盖,这可能会与回形针/载波混淆吗?还是我需要做一些额外的事情才能使其按预期工作?

注意:我正在使用带有 mongoid 的 rails 4.1。

【问题讨论】:

    标签: ruby-on-rails upload download mongoid documents


    【解决方案1】:

    所以我决定使用 Carrierwave。正如我所料,仅使用其他 gem 生成文件是不够的,因为那样它们就无法被识别。

    所以在我的控制器中,文件生成后,我必须明确告诉carrierwave在同一个地方覆盖同一个文件:

    def generate_document
        if @doc.generate_document # Generate the file and store it
            flash.notice = "Sir yes sir ! #{t(@doc.human_name)} successfully generated !"
    
            # Must do this because otherwise file isn't recognised by carrierwave :
            @doc.document_file = File.open(@doc.full_path)
    
            @doc.save!
        else
            flash.alert = "Krap, it failed..."
        end
        redirect_to ...
    end
    

    document_file 是我的文档类的mount_uploader :document_file, DocumentFileUploader

    除非有人提供更好的答案,否则我会选择我的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-05
      • 2019-03-13
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-31
      相关资源
      最近更新 更多