Я перехожу с 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
не перезаписывается должным образом. Что мне нужно сделать, чтобы сделать эту работу правильно?
store_dir
только при фактической загрузке, а не если вы устанавливаете его вручную? - person Dave Newton   schedule 16.09.2011