モデルの値 (crop_x、crop_y、crop_w、crop_h) に基づいてトリミングする必要がある元の画像のいくつかのバージョンを作成する CarrierWave ImageUploader があります。
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
...
version :t do
process :cropper
process :resize_to_fill => [75, 75]
end
...
def cropper
manipulate! do |img|
img = img.crop "#{model.crop_x}x#{model.crop_y}+#{model.crop_w}+#{model.crop_h}"
img
end
end
end
私が抱えている問題は、設定がない場合にデフォルトのクロッピング値を計算する必要があることですが、このロジックをどこに置くべきかわかりません。これを私の Photo モデル (アップローダーがマウントされている) に before_validation で入れてみましたが、これはクロッパー関数が実行された後に呼び出されるようです。ImageUploader ファイル、またはサムが作成される前に発生するコールバックのいずれかである必要があると考えています。