Forms Can';无法验证电话号码

Forms Can';无法验证电话号码,forms,ruby-on-rails-3,Forms,Ruby On Rails 3,我正在尝试验证一个电话号码,但没有成功。当我提交以下型号的表格时,它总是接受我输入的电话号码,不管它是否有效。为什么会这样 class Client < ActiveRecord::Base belongs_to :salon belongs_to :address accepts_nested_attributes_for :address attr_accessible :address_attributes, :name, :phone, :email valid

我正在尝试验证一个电话号码,但没有成功。当我提交以下型号的表格时,它总是接受我输入的电话号码,不管它是否有效。为什么会这样

class Client < ActiveRecord::Base
  belongs_to :salon
  belongs_to :address
  accepts_nested_attributes_for :address
  attr_accessible :address_attributes, :name, :phone, :email
  validates_presence_of :name
  validates_presence_of :email
  validates_presence_of :phone,
    :unless => Proc.new { |c| c.phone.gsub(/[^0-9]/, "").length != 10 }
end
class客户端Proc.new{c|c.phone.gsub(/[^0-9]/,“”)。长度!=10}
结束
-


禁止保存此客户端:
Salon.logged_in_Salon.id%>








您应该使用的是
验证
的格式,而不是
验证
的存在。比如:

validates_format_of :phone, 
                    :with => /\A[0-9]{10}\Z/, 
                    :allow_blank => true, 
                    :allow_nil => true

嗯,差不多了,但不是我想要的。使用该验证器,“(123)456-7890”将无效,但在我的情况下,这是有效的。也许我将使用更健壮的正则表达式。好的,使用不同的正则表达式,这正是我需要的。谢谢。你能分享你修改过的正则表达式吗?
validates_format_of :phone, 
                    :with => /\A[0-9]{10}\Z/, 
                    :allow_blank => true, 
                    :allow_nil => true