Если вы делаете это с нуля, вы должны поместить файл в каталог загрузки (или создать новый каталог внутри него для хранения разных версий) и сохранить временное имя файла в одном не сохраненном поле вашей модели .
Например, это непостоянное поле может быть названо photo_cache_dir:
attr_accessible :foo, :bar, :photo_cache_dir
attr_accessor :photo_cache_dir
В шаблоне вы просто проверяете наличие этого поля:
@your_model.photo_cache_dir.present?
... и в этом случае, используя собственную логику, отобразите загруженную фотографию.
Я не знаю, является ли это лучшей практикой, но это то, что я использую, и она работает очень хорошо.