Как переопределить, где изображения хранятся CarrierWave? def store_dir не работает

Я перехожу с attachment_fu наCARSWAVE, так как в Rails 3 не работает приложениеAttach_fu, и я хотел бы иметь возможность использовать уже имеющиеся у меня файлы изображений attachment_fu вместо того, чтобы Carrwave создавал новые и перемещал их куда-то еще.

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


person keithepley    schedule 16.09.2011    source источник
comment
Можете ли вы показать (а) код модели, устанавливающий загрузчик, и (б) где вы установили старый образ (и что именно вы подразумеваете под этим)?   -  person Dave Newton    schedule 16.09.2011
comment
Обновил его с кодом модели. Извините, если на старом изображении было непонятно. Старый образ был создан с помощью attachment_fu. Я хочу, чтобы оператор-перевозчик использовал это изображение и тот же путь к нему.   -  person keithepley    schedule 16.09.2011
comment
Хм, мне интересно, использует ли он store_dir только при фактической загрузке, а не если вы устанавливаете его вручную?   -  person Dave Newton    schedule 16.09.2011


Ответы (1)


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

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

CarrierWave.configure do |config|
  config.root = Rails.root
end
person obenda    schedule 03.07.2013