Я думаю, что лучший способ - сохранить размеры изображения в модели (базе данных).
В моем случае название модели - attachment
. Затем я создал миграцию:
rails g migration add_dimensions_to_attachments image_width:integer image_height:integer
После этого запустите миграцию:
rake db:migrate
В моем файле загрузки изображений app/uploaders/image_uploader.rb
, у меня есть:
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process :store_dimensions
private
def store_dimensions
if file && model
model.image_width, model.image_height = ::MiniMagick::Image.open(file.file)[:dimensions]
end
end
end
При этом размеры изображения сохраняются на этапе загрузки.
Чтобы получить размеры, я просто запускаю attachment.image_width
или attachment.image_height
См. Ссылку здесь .