СНИЛС¶ ↑
Генерация, валидация и форматирование СНИЛС (Страхового номера индивидуального лицевого счёта).
Read this README in English (Читать это README на английском)
Установка¶ ↑
Добавьте следующую строчку в Gemfile в вашем приложении:
gem 'snils'
И затем выполните:
$ bundle
Или установите вручную:
$ gem install snils
Использование¶ ↑
Генерирование новых СНИЛСов:
Snils.new.formatted #=> "216-471-647 63"
Проверка корректности СНИЛСов:
Snils.new("21647164763").valid? #=> true Snils.new("21647164760").valid? #=> false Snils.new("21647164760").errors #=> [:invalid] Snils.new("216471647").errors #=> [[:wrong_length, {:count=>11}], :invalid]
Валидация в Ruby on Rails для атрибутов моделей:
-
Измените Gemfile, чтобы он подключал
snils/rails
gem 'snils', require: 'snils/rails'
-
Добавьте валидацию
:snils
к требуемым атрибутамvalidates :snils, presence: true, uniqueness: true, snils: true
Генерация СНИЛСов в фабриках для тестов:
FactoryGirl.define do # Вы можете генерировать случайные корректные СНИЛСы sequence :snils do |_| Snils.generate end # Или последовательные sequence :snils do |counter| Snils.generate(counter) end factory :user do snils end end
Рекомендуемый рабочий процесс для проектов на Ruby on Rails¶ ↑
-
Используйте draper, чтобы форматировать СНИЛС для отображения
# app/decorators/user_decorator.rb class UserDecorator < Draper::Decorator delegate_all def snils @formatted_snils ||= Snils.new(object.snils).formatted if object.snils end end
-
Очищайте СНИЛС при записи в атрибут модели
# app/models/user.rb class User < ActiveRecord::Base validates :snils, presence: true, uniqueness: true, snils: true def snils=(value) write_attribute(:snils, Snils.new(value).raw) end end
С такой настройкой вы всегда будете хранить в БД значение, состоящее только из цифр, а пользователю всегда будете отображать красиво форматированный СНИЛС.
Помощь в разработке¶ ↑
-
Сделайте форк проекта в своём github-аккаунте. ( github.com/Envek/snils/fork )
-
Создайте отдельную ветвь разработки. (
git checkout -b my-new-feature
) -
Внесите в неё желаемые изменения (не забудьте про тесты!) и сделайте коммит(ы). (
git commit -am 'Add some feature'
) -
Запушьте изменения (
git push origin my-new-feature
) -
Создайте новый Pull Request