【问题标题】:Validate only if phone number is not empty仅在电话号码不为空时验证
【发布时间】:2012-09-05 13:16:27
【问题描述】:

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

validates :phone_number, :uniqueness => true 

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

Validation failed: Phone number has already been taken

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

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

【问题讨论】:

    标签: ruby-on-rails validation activerecord


    【解决方案1】:

    要么这样:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      validates_uniqueness_of :phone_number, :allow_blank => true
      

      【讨论】:

      • 这个答案将通过简短的解释得到改进。
      • @dgvid:我认为对于这些琐碎的事情,最好遵循已经很丰富的文档,例如 apidock.com/rails 或 api.rubyonrails.org
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多