1

Cloudinaryを使用するようにcarrierwaveアップローダーを変換しています。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
4

1 に答える 1

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
于 2013-03-26T15:13:38.043 に答える