我从载波 https://github.com/jnicklas/carrierwave用于文件上传,到目前为止我对此非常满意。我的文件存储在亚马逊 s3 上,这相当简单并且工作可靠。
现在我有一个名为pictures
和上传者姓名MainUploader
。我需要一个特殊的动态路径来保存这些文件上传时的位置。
我也在使用设备并且我有current_user
我可以从我的视图和控制器访问,但不能从载波上传器访问。我需要文件的路径类似于
uploads/#{current_user.location}/#{current_user.first_name}/images
但我无法从上传者访问 current_user 并且没有看到任何替代方案。这种类型的动态路径是否可以通过载波实现(无需重写大量此宝石)?
非常感谢任何指点。
感谢您的帮助。
以防万一其他人通过谷歌搜索或其他东西想知道这里。
我最终做的是在我的模型上创建一个belongs_to关系(pictures
)到用户模型。然后从载波上传器我可以做model.user.first_name
这相当于picture.user.first_name
。因此,我可以将该 model.user 放在我的路径中,并以这种方式访问任何用户属性。希望这对其他人有帮助。
就像是:
def store_dir
"#{model.user.first_name}/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.title}"
end
附注
注意我也用过model.title
那是因为我希望 picture.title 也位于路径中。但这不是最佳实践。如果您这样做,请确保在生产中解析 model.title,以便它为您提供有效的文件夹名称/url。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)