我想更改使用CarrierWave gem时保存文件的默认位置。目前,文件存储在public/uploads/userfile/avatar/MODELID
中。我想根据签名用户更改位置。
例如用户1已登录,文件应存储到,
public/uploads/USERID/MODELID
我将avatar_uploader.rb更改为:
def store_dir
"uploads/#{current_user.id}/#{model.id}"
end
我收到错误消息,说找不到current_user。任何帮助/澄清将不胜感激。
答案 0 :(得分:0)
上传者(以及模型)不知道设计制作的current_user
变量,只适用于控制器和视图。
我要解决的方法是清空你的store_dir
方法:
def store_dir
""
end
然后转到您的控制器并将您的首选键分配给"键"上传器对象的属性:
@uploader = @model.uploader_mounted_as
@uploader.key = "uploads\/#{current_user.id}\/#{model.id}/\${filename}"
如果文件为"uploads/1/2/image.png"
,则您的上传内容会存储到image.png
,您的current_user标识为1
,模型实例的标识为2
。
答案 1 :(得分:0)
所以我在发布问题后解决了这个问题。光辉的光芒总是在错误的时间出现!
在这里,
def store_dir
"uploads/#{model.user_id}"
end