【发布时间】:2012-02-11 12:00:12
【问题描述】:
我正在使用 Carrierwave 上传文件。当控制器接收到文件时,我将其设置为模型对象并保存模型。
@submission = Submission.new(params[:submission])
@submission.file = params[:submission][:file]
@submission.save
然后我看到文件保存在目录结构中。我假设这个配置设置了目录
上传者/submission_uploader.rb
def store_dir
"files/#{model.class.to_s.underscore}/#{model.id}/#{mounted_as}/"
end
我还收到来自不同来源的文件。例如,用户可以上传一个 zip 文件,然后在服务器上提取该 zip 文件,并使用每个提取的文件和相同的参数创建一个新的提交,并保存。
在这种情况下,当文件不是来自上传,而是来自其他来源,例如存储在服务器上的文件时,保存模型时,是否会生成与文件上传时相同的目录结构?
我感到困惑的原因是,根据documentation Carrierwave 是一个文件上传器 gem,但这更多地与对象关系映射有关,即将模型对象的文件字段保存到数据库。
如何为提交设置不同的文件,并确保它们保存在与从上传接收文件时相同的目录结构中?
【问题讨论】:
标签: ruby-on-rails ruby file carrierwave