RussianPhone
Что это
Гем для разбора и нормализации русских телефонных номеров
Альтернативные решения
https://github.com/floere/phony
https://github.com/joost/phony_rails
Указанные решения поддерживают несколько стран
russian_phone поддерживает и будет поддерживать только российские телефонные номера
Целью данного гема было скорее получение номера в чистом виде (10 значного) из введенных пользователем данных, и возможный минимум отбраковки верных номеров, которые сможет разобрать человек, чем 100% отбраковка неверных номеров.
Installation
Add this line to your application's Gemfile:
gem 'russian_phone'
And then execute:
$ bundle
Or install it yourself as:
$ gem install russian_phone
Usage
Использованиие для разбора телефонных номеров:
# phone = RussianPhone::Number.new('(906) 111-11-11', default_country: 7)
=> "+7 (906) 111-11-11"
# phone.country
=> "7"
# phone.city
=> "906"
# phone.subscriber
=> "1111111"
# phone.full
=> "+7 (906) 111-11-11"
# phone.cell?
=> true
# phone.free?
=> false
# phone.valid?
=> true
Использование с Mongoid:
class User
include Mongoid::Document
field :phone, type: RussianPhone.field(default_country: 7, allowed_cities: [495]), validate: true, required: true
end
# u = User.new(phone: '495 1111111')
# u.phone
=> '+7 (495) 111-11-11'
# u.phone.valid?
=> true
Обратите внимание, по умолчанию валидация телефонного номера выключена, это значит что номер будет сохраняться в базу даже если гем не смог его разобрать. Включите валидацию, установив validate:true.
В базе телефоны храняться в виде строки в полном виде, если телефон удалось разобрать, и в том виде как введено пользователем, если не удалось разобрать и validate == false
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request