Rails – Paperclip在不应该的情况下validation附件大小?

我有一个使用Paperclip的rails模型,如下所示:

has_attached_file :image, :styles => { :normal => ['857x392#', :png] }, :url => '/assets/pages/:id/:basename.:extension', :path => ':rails_root/public/assets/pages/:id/:basename.:extension' validates_attachment_size :image, :less_than => 2.megabytes 

尝试创建此模型的记录而没有要上载的附件时,将返回validation错误:

以下字段存在问题:

 * Image file size file size must be between 0 and 2097152 bytes. 

我尝试在模型中的validation语句之后传递两个:allow_blank => true和:allow_nil => true,但两者都没有工作。

如何允许:image参数为空?

validates_attachment_size:image,:in => 0.megabytes..2.megabytes

现在有效

 validates_attachment_size :image, :less_than => 25.megabytes, :unless => Proc.new {|m| m[:image].nil?} 

适合我

Paperclip的validation仅检查范围,而不关心:allow_nil => true

你可以做的是尝试设置:min => nil:min => -1 ,也许这样可行。

更新:这在最新版本的Paperclip中不起作用,因为它们已经改变了validation的工作方式。 您可以尝试的是:

 validates_attachment_size :image, :less_than => 2.megabytes, :unless => Proc.new {|model| model.image } 

请尝试以下代码。

 validate :image_present def image_present if image.present? && image_file_size < 2.megabytes errors.add(:file_size, "file size must be between 0 and 2 megabytes.") end end