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