我正在尝试验证使用carrierwave上传的图片的大小以及用户上传的图片数量(最好验证每个图片文件的大小)。
我正在以下列方式使用nested_attributes
class Animal < ActiveRecord::Base
has_many :animal_images, dependent: :destroy
accepts_nested_attributes_for :animal_images, allow_destroy: :true, reject_if: proc { |attributes| attributes['image'].size > 2.megabytes }, limit: 3
end
所以目前如果图像超过2MB,如果静默失败,如果用户尝试上传超过3个图像,那么我会得到一个NestedAttributes :: TooManyRecords异常,从用户的角度来看这看起来不太好。 / p>
我想要做的是在我当前的自定义验证方法中包含这些验证,以便我可以将错误添加到[:base]
def dog_form_validation
if name.blank?
errors[:base] << "Please provide your Dog's name"
end
if age.blank?
errors[:base] << "Please provide your Dog's age"
end
// More validations here
end
我如何访问animal_image数组,1)检查它是否首先存在,然后2)检查它的大小....或者我正在考虑这个错误的方式
if animal_image[0].size > 2.megabytes
errors[:base] << 'Please ensure file size is less than 2MB"
end
任何帮助表示赞赏
答案 0 :(得分:0)
您可能必须使用
memsize_of(animale_image[0]) > 2.megabytes
或
number_to_human_size(File.size("#{animal_image[0]}"))
使用number_to_human_size
为您的班级添加include ActionView::Helpers::NumberHelper