如何覆盖CarrierWave存储图像的位置? def store_dir似乎不起作用

时间:2011-09-16 18:08:26

标签: ruby-on-rails ruby-on-rails-3 carrierwave

我正在从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_avatar模型中的User设置为旧图像时

user.user_avatar = "#{Rails.root}/public/images/users/0000/0061/foo.png"

它会像"/uploads/tmp/20110916-1244-15398-7724/foo.png"

那样回归

store_dir似乎未被正确覆盖。我需要做些什么才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

Carrierwave默认基本位置是公用文件夹

尝试使用

进行更改
CarrierWave.configure do |config|
  config.root = Rails.root
end