【发布时间】:2011-11-18 21:46:18
【问题描述】:
我正在从 attachment_fu 转移到carrierwave,因为 attachment_fu 被 Rails 3 破坏了,并且希望能够使用我已经拥有的 attachment_fu 图像文件,而不是使用 carrierwave 制作新图像并将它们移动到其他地方。
我的图片是按 id 分区的,所以如果用户 id 是 61 并且他们上传了一个名为 "foo.png" 的文件,那么他们的旧 attachment_fu 图像将在 "public/images/users/0000/0061/foo.png"
在我的用户模型中,我使用以下方式安装载波图像上传器:
attr_accessible :user_avatar
mount_uploader :user_avatar, UserAvatarUploader
在我的UserAvatarUploader 中,我有这个:
def store_dir
File.join Rails.root, "public/images/users", ("%08d" % model.id).scan(/\d{4}/).join("/")
end
所以当我设置:user_avatar 时,我应该得到"public/images/users/0000/0061/foo.png"
但是当我尝试将User 模型中的:user_avatar 设置为旧图像时
user.user_avatar = "#{Rails.root}/public/images/users/0000/0061/foo.png"
它以 "/uploads/tmp/20110916-1244-15398-7724/foo.png" 之类的形式返回
store_dir 似乎没有被正确覆盖。我需要做什么才能使这项工作正常进行?
【问题讨论】:
-
您能否展示 (a) 安装上传器的型号代码,以及 (b) 您设置旧图像的位置(以及您的确切含义)?
-
用型号代码更新了它。抱歉,如果旧图像上不清楚。旧图像由 attachment_fu 创建。我希望carrierwave 使用该图像和相同的路径。
-
嗯,我想知道它是否只在您实际上传时使用
store_dir,而不是您手动设置?
标签: ruby-on-rails ruby-on-rails-3 carrierwave