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 UTF8.valid? value
        end
      end    

    end
  end
end
