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