没有附件时回形针验证

Paperclip validating when no attachment

我有一个 rails 模型,其中使用 Paperclip 上传图像。

我添加了图片尺寸验证。

validates_attachment-size :image, less_than => 5.megabytes

在没有附件的情况下尝试保存模型时,它会验证不存在但保存失败的图像。

如果没有图像,我需要保存模型,只有在有图像时才能进行验证。

试试下面的代码。

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

此处,如果模型中存在图像,验证将起作用,如果没有图像,将跳过验证。

首先,您的代码中有错字。 validates_attachment-size 应该是 validates_attachment_size.

您想做的事情:

validates_attachment_size :image, less_than => 5.megabytes

这个内置的助手可以正常工作。但是,此验证将强制验证实际附件,这意味着如果图像不存在,它将无法工作。

因此,如果您想确定图像是否存在,您可以添加一个 custom validator 来检查图像是否存在。像这样:

validate :image_presence_and_size

def image_presence_and_size
  if image.present? && image_file_size < 5.megabytes
    errors.add(:file_size, "file size must be less than 5 megabytes.")
  end
end