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