如何使用条件逻辑执行Cloudinary转换?

时间:2013-03-25 17:45:34

标签: carrierwave cloudinary

我正在转换一个载波上传器以使用Cloudinary。我有几个像这样的方法,输出Cloudinary格式的哈希值,但不幸的是在版本块中你无法访问外部方法。我想知道这样做的最佳方式是关于cloudinary,或者甚至是否可能。

def custom_crop
  if model.cropping?
    cloudinary_transformation({x: model.crop_x.to_i,
     y: model.crop_y.to_i,
     width: model.crop_w.to_i,
     height: model.crop_h.to_i,
     crop: :crop})
  end
end

def watermark
  if model.respond_to?(:watermarking?) && model.watermarking?
    cloudinary_transformation({overlay: "watermark_x8b0vp",
     gravity: :south_east,
     x: 0,
     y: 106})
  end
end

理想情况下我想要运行的代码是这样的:

version :cropped_original do
  process :custom_crop
  process :watermark
  resize_to_fill(81, 50, :center)
end

1 个答案:

答案 0 :(得分:2)

您可以从流程方法返回所需的转换。但是,在这种情况下,您可能想要链接它们。你这样做如下:

def custom_crop_and_watermark
  transformation = []
  if model.cropping?
    transformation << {x: model.crop_x.to_i,
     y: model.crop_y.to_i,
     width: model.crop_w.to_i,
     height: model.crop_h.to_i,
     crop: :crop}
  end
  if model.respond_to?(:watermarking?) && model.watermarking?
    transformation << {overlay: "watermark_x8b0vp", gravity: :south_east, x: 0, y: 106}
  end
  {:transformation=>transformation}
end