+ 1 для attachment_fu
Я использую attachment_fu в одном из моих приложений и ДОЛЖЕН хранить файлы в БД (по назойливым причинам, которые выходят за рамки этого условия).
(Одна?) Хитрая вещь, связанная с BLOB, я обнаружил, что вам нужен отдельный путь к коду для отправки данных пользователю - вы не можете просто встроить путь в файловую систему, как вы был бы, если бы это был файл простого Джейн.
например. если вы храните информацию об аватаре, вы не можете просто сделать:
<%= image_tag @youruser.avatar.path %>
Вы должны написать некоторую логику оболочки и использовать send_data, например (ниже приведен просто пример с attachment_fu, на практике вам нужно его высушить)
send_data(@youruser.avatar.current_data, :type => @youruser.avatar.content_type, :filename => @youruser.avatar.filename, :disposition => 'inline' )
К сожалению, насколько я знаю, attachment_fu (у меня нет последней версии) не делает для вас хитрой упаковки - вы должны написать это сами.
P.S.
Видя, что ваш вопрос отредактирован - Attachment_fu обрабатывает все эти раздражающие вещи, о которых вы упомянули - о необходимости знать пути к файлам и всякую ерунду - за исключением одной маленькой проблемы при хранении в БД. Дайте ему попытку; это стандарт для рельсовых приложений. Если вы настаиваете на повторном изобретении колеса, исходный код attachment_fu также должен документировать большинство ошибок!