Ruby on rails 验证可选字段的\u附件
我有一个uload字段,它是可选的,可以保留为空。但是当它被使用时,我想验证附件的大小和内容。因此,我在模型中使用此验证:Ruby on rails 验证可选字段的\u附件,ruby-on-rails,paperclip-validation,Ruby On Rails,Paperclip Validation,我有一个uload字段,它是可选的,可以保留为空。但是当它被使用时,我想验证附件的大小和内容。因此,我在模型中使用此验证: validates_attachment :attachment, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }, size: { in: 0..500.kilobytes } 当存在附件时,此操作有效,但当附件为空时,此操作失败。如何确保它仅在有附加文件时才进行验证 不幸
validates_attachment :attachment, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }, size: { in: 0..500.kilobytes }
当存在附件时,此操作有效,但当附件为空时,此操作失败。如何确保它仅在有附加文件时才进行验证
不幸的是,上述解决方案不起作用。请尝试以下方法:
has_attached_file :attachment, :styles => { :small => "200x200>" }
validates_attachment :attachment,
:size => { :in => 0..500.kiobytes },
:content_type => { :content_type => /^image\/(jpeg|png|gif|tiff)$/ }
它正在我的应用程序上工作。除非我设置了默认附件,以防用户选择不上传附件。您提供的链接提供了我的建议-使用
if:
参数
--
如果:
基本上允许您确定验证器将启动的条件。我从链接中看到,这些人正在使用if::avatar\u changed?
您可能遇到的问题是,您可以使用Proc
或实例方法来确定条件;由于这些家伙在《阿凡达》(avatar)上使用了一种方法(尽管是内置的),所以不太可能产生你想要的结果
我会这样做:
validates_attachment :attachment, content_type: { content_type: ["image/jpeg", "image/gif", "image/png"] }, size: { in: 0..500.kilobytes }, if: Proc.new {|a| a.attachment.present? }
这基本上确定是否存在附件
对象,为验证提供true
或false