電話番号にバリデーションを使用する

telephone_numberというgemを使用してカスタムバリデーションを定義する。

まずはgemを定義

gem 'telephone_number'

そしてbundle install!

$ bundle

config/initializeに下記のように定義

module ActiveModel
  module Validations
    class TelValidator < EachValidator
      def validate_each(record, attribute, value)
        return if value.blank?

        record.errors.add attribute, :invalid unless TelephoneNumber.valid?(value, :jp)
      end

      module HelperMethods
        def validates_tel_of(*attr_names)
          validates_with TelValidator, _merge_attributes(attr_names)
        end
      end
    end
  end
end

そしてあとは個別のモデルで下記のようにすれば電話番号のバリデーションがかかってくれる。

validates :tel, tel: true

参考記事