10

我有使用回形针,看起来像这样的轨道模型: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 

当试图建立这种模式的记录没有附件上传,则返回验证错误:

有问题有以下 字段:

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

我已经试过同时传递:allow_blank => true和:allow_nil => true在模型中的验证语句之后,但都没有工作。

我该如何允许:image参数为空?

回答

1

回形针的验证只检查的范围内,并且不会关心:allow_nil => true

你可以做的就是尽量设置:min => nil:min => -1,也许这会工作。

更新: 这将不会在Paperclip的最新版本中工作,因为它们已经改变了验证的工作方式。 什么你可以尝试的却是:完美的我

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

刚试过这个,不起作用。 – ground5hark 2010-01-11 22:10:58

+0

hmm,您使用哪种回形针版本(您可以在vendor/plugins/paperclip/lib/paperclip.rb中找到版本)? – 2010-01-11 22:24:37

+0

我刚刚在几分钟前尝试了解这一点。我回到这里报告我的结果和唉,他们几乎和你的一样。对于任何有此问题的人,您还可以使用散列: Proc.new {| model |模型[:图像] .nil? } – ground5hark 2010-01-11 22:32:59

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

作品

9

validates_attachment_size:图像,:在=> 0.megabytes..2.megabytes

现在作品

0

请尝试下面的代码。

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