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
@osnysantos I was experiencing the same error because the asset was not present (the url was broken). I added the the line
next if value.present? && !(value.file.exists?)
inside the validate_each loop so I don't get an exception when the file url is broken. It seems to work fine so far. If the url is broken I don't need to validate the file size.