Используя 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 эскиза вместе с ней. Я попробовал несколько разных техник, но безрезультатно.
Есть предложения?