我想允许发布没有图片的邮件或者发布唯一图片的邮件,我在模型中添加了以下代码
validates :image_fingerprint, :uniqueness => true
禁止发布类似的图片,但禁止发布多条没有图片的邮件。我试着添加
:allow_blank =>真
和
:allow_nil =>真
但它会导致以下错误:
PostsController中的TypeError #create 无法将nil转换为String
我该如何解决?
答案 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