1

我可以在模型中验证 phone_number 的唯一性,如下所示:

validates :phone_number, :uniqueness => true 

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

Validation failed: Phone number has already been taken

似乎它甚至对空电话号码进行了验证。

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

4

2 回答 2

3

要么:

validates :phone_number, :uniqueness => true, :allow_nil => true

如果 phone_number 为nil(或数据库中为 NULL),则通过,或者这样:

validates :phone_number, :uniqueness => true, :allow_blank => true

如果 phone_number 为nil或空字符串,则通过

于 2012-09-05T13:20:45.773 回答
2

Rails 开箱即用。检查文档:http ://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of

validates_uniqueness_of :phone_number, :allow_blank => true
于 2012-09-05T13:18:41.657 回答