在我的rails应用中,我的用户可以输入他们的电话号码。
我正在使用phonelib来验证电话号码,但我的服务只能在一个国家/地区使用,所以我不希望我的用户每次输入电话号码到服务器时输入国家/地区代码
我尝试像我这样配置phonelib.rb
:
Phonelib.default_country = "CHE"
但是当我尝试输入电话号码时,如果我没有输入+41
国家/地区代码,它仍然会无效。
是否可以抛出phonelib或更好的其他解决方案?
答案 0 :(得分:1)
来自"未来证据"我仍然建议保留国家代码。
默认情况下,您可以在所有手机字段中显示国家/地区代码,这样,如果只有一个国家/地区代码,用户就不必输入,但这样您就可以确定你的数据质量。
无论如何,只是我的2美分..
答案 1 :(得分:0)
您可以捕获任何电话号码,但有一个自定义验证器使用Phonelib
。
这里验证输入并告诉用户它的期望。
validates_with PhoneCountryCodeValidator, fields: [:client_mobile], country_codes: ["CH", :ch, Phonelib.default_country]
class PhoneCountryCodeValidator < ActiveModel::Validator
def validate(record)
options[:fields].any? do |field|
phone_number = record.send(field)
phone_country = Phonelib.parse(phone_number).country
phone_country_code = phone_country.to_s.upcase
options[:country_codes].any? do |valid_country|
valid_country_code = valid_country.to_s.upcase
unless phone_country_code == valid_country_code
record.errors.add(field, "has an invalid country code:
#{phone_country_code} should be #{valid_country_code}")
end
end
end
end
end
另请查看此问题以获取更多详细信息:https://github.com/daddyz/phonelib/issues/136