Note that this validation runs both after the file is uploaded and after CarrierWave has processed the image. If your base uploader includes a filter to resize the image then the validation will be run against the resized image, not the original one that was uploaded. If this causes a problem for you, then you should avoid using a resizing filter on the base uploader and put any specific size requirements in a version instead.
So instead of this:
require 'carrierwave/processing/mini_magick'
class LogoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process :quality => 80
process :resize_to_limit => [800, 800]
process :convert => 'png'
# ...
end
Do this:
require 'carrierwave/processing/mini_magick'
class LogoUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
process :convert => 'png'
version :medium do
process :quality => 80
process :resize_to_limit => [800, 800]
end
# ...
end
I'm assuming you mean cached as in stored to the temp folder. No there is no way around that as CarrierWave has to store it somewhere first before the file can be available for validation. You could use an
after_validation
callback to cleanup the temp file if the validation fails, or have a worker process do that periodically on older temp files.