我可以在模型中验证 phone_number 的唯一性,如下所示:
validates :phone_number, :uniqueness => true
问题是数据库中没有一个用户有电话号码,所以他们都是空的。在加载页面时,没有输入任何电话号码,我不断收到以下验证错误:
Validation failed: Phone number has already been taken
似乎它甚至对空电话号码进行了验证。
如何修改验证以仅适用于 params 中的非空电话号码?
我可以在模型中验证 phone_number 的唯一性,如下所示:
validates :phone_number, :uniqueness => true
问题是数据库中没有一个用户有电话号码,所以他们都是空的。在加载页面时,没有输入任何电话号码,我不断收到以下验证错误:
Validation failed: Phone number has already been taken
似乎它甚至对空电话号码进行了验证。
如何修改验证以仅适用于 params 中的非空电话号码?
要么:
validates :phone_number, :uniqueness => true, :allow_nil => true
如果 phone_number 为nil(或数据库中为 NULL),则通过,或者这样:
validates :phone_number, :uniqueness => true, :allow_blank => true
如果 phone_number 为nil或空字符串,则通过
Rails 开箱即用。检查文档:http ://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of
validates_uniqueness_of :phone_number, :allow_blank => true