電話番号にバリデーションを使用する
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