【问题标题】:How do I randomly generate a valid E164-formatted phone number in Ruby?如何在 Ruby 中随机生成有效的 E164 格式的电话号码?
【发布时间】:2017-10-16 19:04:30
【问题描述】:

对于我的 Rails 应用程序的自动化测试,我想生成随机电话号码。

  • 与我系统中的所有电话号码一样,这些电话号码必须采用 E164 格式。
  • 它们必须是有效的电话号码。 (例如根据https://github.com/googlei18n/libphonenumber)。
  • 理想情况下包括非美国号码。

我应该如何处理这个问题?

【问题讨论】:

标签: ruby-on-rails ruby phone-number libphonenumber


【解决方案1】:

找到这个问题,没有找到答案 (comic reference)。

Faker 确实给出了有时无效的随机数。检查了不同语言的其他库做了什么(例如python),采用的一种解决方案是使用 Phony 暴力破解 Faker(这里我也使用 PhonyRails,因为我使用 PhohyRails 国家代码的默认语言环境)

def test_phone_number(locale=nil)

    # Magic to get your own app locale

    Faker::Config.locale = locale

    if [:fi, :de, ...].include?(locale)
        # faker locales that allow cell_phone call
        Faker::PhoneNumber.cell_phone
    else
        Faker::PhoneNumber.phone_number
    end
end

def valid_phone_number!
     number = test_phone_number
     attempts = 0

     while !Phony.plausible?(PhonyRails.normalize_number(number))
         number = test_phone_number
         attempts += 1
         if attempts > 100
             raise "Cannot generate valid phone number" 
         end
     end
     number
end

【讨论】:

    【解决方案2】:

    【讨论】:

    • Faker 不会检查以确保它生成的电话号码是有效的——它只是用随机数字填充它们。
    猜你喜欢
    • 2015-07-25
    • 1970-01-01
    • 2018-11-24
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2014-11-04
    相关资源
    最近更新 更多