Я перехожу из attachment_fu в carrierwave, так как attachment_fu не работает с Rails 3, и хотел бы иметь возможность использовать уже имеющиеся у меня файлы изображений attachment_fu вместо того, чтобы не создавать новые и не перемещать их в другое место.
Мои изображения разделены по идентификатору, поэтому, если идентификатор пользователя 61
и они загружают файл с именем "foo.png"
, тогда их старое изображение attachment_fu будет иметь значение "public/images/users/0000/0061/foo.png"
Inмоя модель пользователей, я монтирую загрузчик изображений carrierwave с помощью:
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
, я долженget "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
не перезаписывается должным образом.Что мне нужно сделать, чтобы сделать эту работу правильно?