12

我有一个使用 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

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

以下字段存在问题:

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

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

如何允许 :image 参数为空白?

4

3 回答 3

11

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

现在工作

于 2012-08-30T13:14:58.653 回答
7
validates_attachment_size :image, :less_than => 25.megabytes, 
                          :unless => Proc.new {|m| m[:image].nil?}

非常适合我

于 2010-06-22T17:09:01.207 回答
1

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

您可以做的是尝试设置:min => nilor :min => -1,也许这会起作用。

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

validates_attachment_size :image, :less_than => 2.megabytes, 
   :unless => Proc.new {|model| model.image }
于 2010-01-11T21:57:32.400 回答