我有一个使用Paperclip的轨道模型,如下所示:
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参数为空?
答案 0 :(得分:10)
validates_attachment_size:image,:in => 0.megabytes..2.megabytes
立即行动
答案 1 :(得分:6)
validates_attachment_size :image, :less_than => 25.megabytes,
:unless => Proc.new {|m| m[:image].nil?}
非常适合我
答案 2 :(得分:1)
Paperclip的验证仅检查范围,而不关心:allow_nil => true
您可以尝试设置:min => nil
或:min => -1
,也许这样可行。
<强>更新强> 这在最新版本的Paperclip中不起作用,因为它们改变了验证的工作方式。 您可以尝试的是:
validates_attachment_size :image, :less_than => 2.megabytes,
:unless => Proc.new {|model| model.image }
答案 3 :(得分: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