С помощью Carrierwave я хочу изменять размер фотографий до разных размеров в зависимости от типа загружаемой фотографии

#ruby-on-rails #file-upload #rmagick #carrierwave

#ruby-on-rails #загрузка файла #rmagick #carrierwave

Вопрос:

У меня есть модель пользователя и модель публикации. Фотография пользователя будет изменена до небольшого эскиза, а фотография публикации будет изменена до большого эскиза.

 version :smallThumb do
     process :resize_to_fill => [100, 100]
   end

   version :largeThumb do
     process :resize_to_fill => [200, 200]
   end
  

Как мне указать carrierwave, какой размер выбрать для загружаемой фотографии? Будет ли он изменяться как на маленький, так и на большой для всех загрузок?

Ответ №1:

Вы можете создать 2 отдельные модели загрузчика. Будет выглядеть примерно так:

profile_uploader.rb

 class ProfileUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick

  storage :file

  version :thumb do
    process :resize_to_fill => [200, 200]
  end

end
  

atached_uploader.rb

 class AttachedUploader < CarrierWave::Uploader::Base

  include CarrierWave::RMagick

  storage :file

  version :thumb do
    process :resize_to_fill => [100, 100]
  end

end
  

user.rb

 class User < ActiveRecord::Base

  mount_uploader :profile, ProfileUploader

end
  

post.rb

 class Post < ActiveRecord::Base

  mount_uploader :attached, AttachedUploader

end