Повторная обработка изображений разных версий в Carrierwave

Используя Carrierwave, я создал 3 версии аватара - оригинал, small_thumb и large_thumb, используя следующие строки:

process :resize_to_limit => [400, 400]  

   version :big_thumb do
     process :resize_to_limit => [80, 80]
   end

   version :small_thumb do
     process :resize_to_limit => [50, 50]
   end

Я добавил дополнительный метод в свой класс AvatarUploader:

def reprocess(x,y,w,h)
        manipulate! do |img|
            img.crop(x.to_i, y.to_i, w.to_i, h.to_i, true) 

            end
resize_to_limit(180,180)  
end

, который вызывается в моей модели после выполнения обновления:

attr_accessor :crop_x, :crop_y, :crop_w, :crop_h
after_update :reprocess_image, :if => :cropping?

def cropping?
    !crop_x.blank? && !crop_y.blank? && !crop_w.blank? && !crop_h.blank?
end

private

def reprocess_image
image.reprocess(crop_x,crop_y,crop_w,crop_h)

end

Мне удалось обрезать и изменить размер оригинала версия, но я не могу обновить 2 эскиза вместе с ней. Я пробовал несколько разных методов, но безрезультатно.

Есть предложения?

17
задан Jonathan Chiu 27 February 2011 в 09:34
поделиться