验证以确保唯一但忽略空值?

AnA*_*ice 31 activerecord ruby-on-rails ruby-on-rails-3

我有以下模型字段验证:

validates_uniqueness_of :acronym, :scope => [:group_id], :case_sensitive => false
Run Code Online (Sandbox Code Playgroud)

问题是这个字段是可选的,并且返回一个空/零值作为已经采用的首字母缩略词.我只想验证一个首字母缩略词是否是唯一的,如果提供了一个值.有没有办法更新此验证只有在有实际值时才会发生..不是nil/empty?

谢谢

tsh*_*rif 62

是的,您可以将两个可能的选项传递给可选字段的验证::allow_blank或者:allow_nil,它们将分别跳过on blanknilfields 的验证.如果将验证更改为以下内容,则应获得所需的行为:

validates_uniqueness_of :acronym, :allow_blank => true, :scope => [:group_id], :case_sensitive => false
Run Code Online (Sandbox Code Playgroud)