Систематический способ обновления с attachment_fu до carrierwave? - PullRequest
4 голосов
/ 15 сентября 2011

Я работаю над обновлением приложения до Rails 3, и attachment_fu не работает, поэтому я перехожу на carrierwave. Есть ли систематический процесс, который я могу пройти, чтобы перейти с attachment_fu на carrierwave? Или учебник для этого? Прямо сейчас, я больше заинтересован в том, чтобы все правильно закончить с базой данных. Я использую опцию хранилища файловой системы для attachment_fu и carrierwave.

Я нашел модуль, UploaderFu из http://ruby.simapse.com/2011/03/migrate-attachmentfu-to-carrierwave.html, который сообщает carrierwave использовать те же каталоги и имена файлов, что и attachment_fu. Но это не полный ответ, а только часть.

Например, в БД у меня есть модель UserImage с атрибутами :filename, :content_type, :size, :width, :height и :user_id. Я добавил столбец :user_avatar и следующее к моей модели

attr_accessible :user_avatar
mount_uploader :user_avatar, UserAvatarUploader

Что именно хранится в :user_avatar. Это просто имя файла? или что-то другое? Мне просто нужно написать миграцию, чтобы переместить данные в :filename (хранятся как "hello_world.png") в :user_avatar? Если это так, я должен просто использовать оригинальный :filename вместо создания столбца :user_avatar, верно?

1 Ответ

1 голос
/ 17 октября 2011

В столбце, в который вы монтируете загрузчик, должен храниться «идентификатор» для загруженного файла.По умолчанию это просто имя файла, но вы можете переопределить его, чтобы оно было практически любым, кроме идентификатора записи (потому что вы не можете знать, что это такое, пока не сохраните его).

Переопределить: в загрузчикекласс, добавьте это определение:

def identifier
       # This is what gets put in the database column!
       model.created_on
end

В этом примере я использовал атрибут made_on из модели.Если вы хотите создать свой собственный механизм хранения, вам нужно иметь возможность уникально идентифицировать файлы по этому идентификатору, поэтому будьте осторожны с тем, что вы выбираете.

Я бы предложил переименовать столбец, чтобы он описывал загружаемый файл (как в примере несущей волны).Тогда вы всегда можете изменить идентификатор из имени файла на что-то другое позже.

...