正确验证上传图像的唯一性,允许发布而无需上传

时间:2013-05-08 11:53:48

标签: ruby-on-rails paperclip

我想允许发布没有图片的邮件或者发布唯一图片的邮件,我在模型中添加了以下代码

validates :image_fingerprint, :uniqueness => true

禁止发布类似的图片,但禁止发布多条没有图片的邮件。我试着添加

  

:allow_blank =>真

  

:allow_nil =>真

但它会导致以下错误:

  

PostsController中的TypeError #create   无法将nil转换为String

我该如何解决?

1 个答案:

答案 0 :(得分:2)

只有当此属性不为空

时,您才能在验证时使用:unless
validates :image_fingerprint, :uniqueness => true, 
  :unless => Proc.new { |a| a.image_fingerprint.blank? }

参考:

  

您可以将:if和:unless选项与对应于将在验证发生之前调用的方法名称对应的符号相关联。这是最常用的选项。

     

最后,可以关联:if和:除非使用将被调用的Proc对象。使用Proc对象可以编写内联条件而不是单独的方法。此选项最适合单行。

     

http://guides.rubyonrails.org/active_record_validations_callbacks.html#conditional-validation