フォームで全角文字の入力を禁止したいなーと考えてて,最初は format: { with: }
で正規表現を書いてみたんだけど,記号の部分を網羅するのが面倒で微妙だった.
ascii_only?
ascii_only? (String) - APIdock
判定できそう!
pry(main)> 'abc'.ascii_only? => true pry(main)> 'あああ'.ascii_only? => false
カスタムバリデータにしてみた
カスタムバリデータとして app/validators/ascii_only_validator.rb
を書いてみた.良さそう.
class AsciiOnlyValidator < ActiveModel::EachValidator def validate_each(record, attribute, value) if value.present? && !value.ascii_only? record.errors[attribute] << I18n.t('validators.ascii_only') end end end
モデル側で指定するのはこんな感じ.
validates :hoge, ascii_only: true
まとめ
実現方法は他にもあると思うけど,候補の1つとして.
Thank you @nysalor !