Attachment_fu безусловно хорош, но уже довольно стар.
Я всегда использую
paperclip. Умеет всё, что вы назвали, и очень очень прост и нативен. Основная особенность в том, что работа с файлами ничем не отличается от работы с обычными атрибутами модели.