class ActiveModel::Validations::NgwordsValidator
Public Instance Methods
validate_each(record, attribute, value)
click to toggle source
# File lib/ngwords/validator.rb, line 8 def validate_each(record, attribute, value) return if value.blank? if Moji.normalize_zen_han(value) =~ ngwords record.errors.add(attribute, I18n.t('activerecord.errors.messages.includes_ngwords', default: ' includes prohibited words.')) end end
Private Instance Methods
ngwords()
click to toggle source
# File lib/ngwords/validator.rb, line 17 def ngwords return @@ngwords unless @@ngwords.nil? ngwords = [] Ngwords::Settings.each do |lang, list| delim = lang == :en ? '\\b' : '' Array(list).reject(&:blank?).each do |ngword| escaped_ngword = ngword.split(/\p{blank}/).reject(&:blank?).map { |word| '(?=.*' + delim + Regexp.escape(word) + delim + ')' }.join('') ngwords << Regexp.compile("^#{escaped_ngword}", Regexp::IGNORECASE | Regexp::MULTILINE) end end @@ngwords = Regexp.union(ngwords) end