Rails - Paperclip在不应该的时候验证附件大小?

gro*_*ark 11 ruby activerecord ruby-on-rails paperclip ruby-on-rails-plugins

我有一个使用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
Run Code Online (Sandbox Code Playgroud)

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

以下字段存在问题:

* Image file size file size must be between 0 and 2097152 bytes.
Run Code Online (Sandbox Code Playgroud)

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

如何允许:image参数为空?

use*_*870 10

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

现在有效


小智 6

validates_attachment_size :image, :less_than => 25.megabytes, 
                          :unless => Proc.new {|m| m[:image].nil?}
Run Code Online (Sandbox Code Playgroud)

适合我


Jim*_*nke 1

Paperclip的验证只检查范围,并不关心:allow_nil => true

你可以做的就是尝试设置:min => nil:min => -1,也许会起作用。

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

validates_attachment_size :image, :less_than => 2.megabytes, 
   :unless => Proc.new {|model| model.image }
Run Code Online (Sandbox Code Playgroud)