Я создаю изображение большого пальца для файлов, загруженных в мое приложение. Имена изображений имеют в них код метки времени. Когда я запускаю recreate_versions
, у созданного большого пальца также есть метка времени, но он использует текущую временную метку, которая делает имя изображения большого пальца отличным от исходного имени файла.Carreirwave - Как получить имя версии, созданное непосредственно из сохраненного имени файла
Поэтому я решил, что исправление будет состоять в том, чтобы иметь собственное имя файла для большого пальца. В основном есть «thumb_» + «оригинальное имя файла».
version :thumb do
process :resize_to_limit => [110, nil]
def full_filename(for_file = model.image_value.file)
'thumb_' + File.basename(model.image_value.path).to_s
end
end
def filename(for_file = model.image_value.file)
"#{model.id}" + "-v#{timestamp}" + "-" + "#{model.name}" + ".png" if original_filename.present?
end
def timestamp
var = :"@#{mounted_as}_timestamp"
model.instance_variable_get(var) or model.instance_variable_set(var, Time.now.to_i)
end
Это казалось легко исправить, но по какой-то причине, когда я бегу recreate_versions
большого пальца изображение генерируется с текущей меткой времени в нем, а не метки времени во имя исходного файла. Из того, что я понимаю, он должен захватить значение, хранящееся в БД, являющееся сырым именем файла, и добавить его в конец «thumb_». Но каким-то образом его изменение метки времени в названии.
stored filename = 1-v1474175808-model-name.png
Item.find(1).image_value_url(:thumb) = thumb_1-v1474175808-model-name.png #this works correctly and looks for the correct filename
thumb filename saved = thumb_1-v1472111618-model-name.png #thumb saved is different. For some reason has a different timestamp in name
Я думал, что, может быть, def full_filename
Isnt бежится, но если я изменить его на что-то другое имя файла большого пальца сохранен изменяется на то, что в def full_filename
.
Не уверен, что здесь происходит. надеюсь, кто-то может помочь. Если это выглядит так, как должно работать, сообщите мне, по крайней мере, что выяснит, что это может быть то, на что я не смотрю.
Поскольку имя должно быть изменено и быть uniq, когда изображение обновляется. – Rob
Итак, вам нужны все версии, чтобы иметь новое уникальное имя? – Benjamin
Нет версий просто нужно иметь то же имя, что и исходный файл, но с добавлением «thumb_» к его имени. – Rob