仅在电话号码不为空时验证

时间:2012-09-05 13:16:27

标签: ruby-on-rails validation activerecord

我可以在模型中验证phone_number的唯一性:

validates :phone_number, :uniqueness => true 

问题是数据库中的所有用户都没有电话号码,因此它们都是空的。在加载页面时,没有分配任何电话号码,我不断收到以下验证错误:

Validation failed: Phone number has already been taken

似乎它甚至对空电话号码应用验证。

如何修改验证仅适用于参数中的非空电话号码?

2 个答案:

答案 0 :(得分:3)

要么:

validates :phone_number, :uniqueness => true, :allow_nil => true
如果phone_number是 nil (或数据库中为NULL),则传递

,或者:

validates :phone_number, :uniqueness => true, :allow_blank => true
如果phone_number为 nil 或空字符串

,则传递

答案 1 :(得分:2)

Rails提供开箱即用的功能。查看文档:{​​{3}}

validates_uniqueness_of :phone_number, :allow_blank => true