Как переопределить, где изображения хранятся в CarrierWave?def store_dir не работает - PullRequest
2 голосов
/ 16 сентября 2011

Я перехожу из 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 не перезаписывается должным образом.Что мне нужно сделать, чтобы сделать эту работу правильно?

1 Ответ

0 голосов
/ 03 июля 2013

Базовым местоположением Carrierwave по умолчанию является общая папка

попробуйте изменить его с помощью

CarrierWave.configure do |config|
  config.root = Rails.root
end
...