我确实从表格中发布了电话号码
def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
我确实使用params[:phone].class
它总是显示字符串类。我怎样才能找到字符串或整数?
我确实从表格中发布了电话号码
def update_phone
if params[:phone]
#here I want to check weather params[:phone] is number or string
end
我确实使用params[:phone].class
它总是显示字符串类。我怎样才能找到字符串或整数?
在 Ruby 中,您通常不会对类型进行操作,而是对变量的行为进行操作。如果您想检查那params[:phone]
是有效的电话号码,请使用正则表达式,即:
phone = params[:phone] if params[:phone] =~ /\A\(?\d{3}\)?-?\d{3}-?\d{3}\Z/
但更好的选择是在模型中的验证器中检查这一点。
您应该在模型中使用一些验证器并结合电话号码的正则表达式:根据您所在国家/地区的电话号码系统,只允许使用数字和一些格式字符,例如+-./()
和空格:+23 (0) 322/242324-12
或者234.1432.123
都是有效数字。
已编辑,感谢您的评论。我认为这适用于最常见的情况。但是,这不适用于前导零:
str = params[:phone]
#it is numeric if the following is true:
str.to_f.to_s == str || str.to_i.to_s == str