]> git.openstreetmap.org Git - rails.git/blobdiff - lib/validators.rb
Merge remote-tracking branch 'openstreetmap/pull/1553'
[rails.git] / lib / validators.rb
index 095fb7af9ac3dc1bedea4f231963e1835f5dac2b..0c6b3f5949e9eec7ba719aa2096a3b49fff71606 100644 (file)
@@ -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