X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/c8ee1351049ef1bb4d7b50d071b2a96154266d1d..7c78c70456c87654848381e0c5484b7e09f37998:/lib/validators.rb?ds=sidebyside diff --git a/lib/validators.rb b/lib/validators.rb index 095fb7af9..0c6b3f594 100644 --- a/lib/validators.rb +++ b/lib/validators.rb @@ -1,32 +1,9 @@ -module ActiveRecord - module Validations - module ClassMethods - - # error message when invalid UTF-8 is detected - @@invalid_utf8_message = " is invalid UTF-8" - - ## - # validation method to be included like any other validations methods - # in the models definitions. this one checks that the named attribute - # is a valid UTF-8 format string. - def validates_as_utf8(*attrs) - validates_each(attrs) do |record, attr, value| - record.errors.add(attr, @@invalid_utf8_message) unless valid_utf8? value - end - end - - ## - # Checks that a string is valid UTF-8 by trying to convert it to UTF-8 - # using the iconv library, which is in the standard library. - def valid_utf8?(str) - return true if str.nil? - Iconv.conv("UTF-8", "UTF-8", str) - return true - - rescue - return false - end - - end +## +# validation method to be included like any other validations methods +# in the models definitions. this one checks that the named attribute +# is a valid UTF-8 format string. +class Utf8Validator < ActiveModel::EachValidator + def validate_each(record, attribute, value) + record.errors.add(attribute, " is invalid UTF-8") unless UTF8.valid? value end end