我的网络平台帮助我们的协会管理项目。许多文档是由平台自动生成的,然后我们的成员应该生成它们,并最终下载 - 检查 - 重新上载它们。我们还需要跟踪不同的信息,如签名日期,阅读日期等。
目前,基类用于表示此类文档,然后继承这些文档以定义我们使用的每种文档类型(例如,文档是否可自动生成,可以上载等)。这些文件需要存储在rails app文件夹之外。完整的文件名/路径/生成在每个继承的类
中定义使用paperclip / carrierwave可以轻松实现这一目标吗?或者我应该自己实现这一点(最终从上述宝石的源代码中汲取灵感?)
我担心这些宝石可能对我想做的事情太有限了。例如:当自动生成文件时,最终现有文件将被覆盖,这可能会搞乱paperclip / carrierwave吗?或者我是否需要做额外的事情以使其按预期工作?
注意:我使用带有mongoid的rails 4.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
除非有人提供更好的答案,否则我会选择我的。