【问题标题】:Paperclip validating when no attachment回形针在没有附件时验证
【发布时间】:2015-08-18 04:06:20
【问题描述】:
我有一个使用 Paperclip 上传图像的 rails 模型。
我已经为图片添加了尺寸验证。
validates_attachment-size :image, less_than => 5.megabytes
在没有附件的情况下尝试保存模型时,它会验证不存在的图像并导致保存失败。
如果没有图像,我需要保存模型,并且只有在有图像时才能进行验证。
【问题讨论】:
标签:
ruby-on-rails
validation
paperclip
ruby-on-rails-2
【解决方案1】:
首先,您的代码中有错字。 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
【解决方案2】:
试试下面的代码。
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
这里,如果模型中存在图像,则验证将起作用,如果没有图像,则将跳过验证。