我可以在模型中验证phone_number的唯一性:
validates :phone_number, :uniqueness => true
问题是数据库中的所有用户都没有电话号码,因此它们都是空的。在加载页面时,没有分配任何电话号码,我不断收到以下验证错误:
Validation failed: Phone number has already been taken
似乎它甚至对空电话号码应用验证。
如何修改验证仅适用于参数中的非空电话号码?
答案 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