Rails文件存储与生成/下载/上传和状态

时间:2014-11-08 23:12:50

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

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

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

中定义

使用paperclip / carrierwave可以轻松实现这一目标吗?或者我应该自己实现这一点(最终从上述宝石的源代码中汲取灵感?)

我担心这些宝石可能对我想做的事情太有限了。例如:当自动生成文件时,最终现有文件将被覆盖,这可能会搞乱paperclip / carrierwave吗?或者我是否需要做额外的事情以使其按预期工作?

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

1 个答案:

答案 0 :(得分:0)

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

所以在我的控制器中,生成文件后,我必须明确地告诉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

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