Передача параметра загрузчику / доступ к атрибуту модели из загрузчика / разрешение пользователю выбирать размер эскиза

#ruby-on-rails-3 #carrierwave

#ruby-on-rails-3 #carrierwave

Вопрос:

Я хотел бы обрезать изображение до размера, выбранного пользователем из списка (например, 100x100px, 200x200px, …) Как мне передать этот атрибут загрузчику или получить атрибут модели из загрузчика?

Доступ к атрибуту модели из загрузчика следующим образом не работает:

 version :thumb do
    thumbnail_size = model.thumbnail_size
    ...
    ...
end
  

Я получаю следующую ошибку:

неопределенная локальная переменная или метод `model’ для #

Спасибо! Флориан

Ответ №1:

Чтобы иметь доступ к атрибуту модели, мне пришлось добавить помощника по манипулированию.

 class MyUploader < CarrierWave::Uploader::Base
  ...

  version :thumb do
    process :custom_thumbnail
    process :convert => 'jpg'
    ...
  end

  def custom_thumbnail
      width =  model.get_image_width     
      height = model.get_image_height

      manipulate! do |img|
        img.convert "#{width}x#{height}"
        img
      end
  end
end