source: subversion/sites/rails_port/lib/validators.rb @ 14586

Last change on this file since 14586 was 14586, checked in by tomhughes, 11 years ago

Merge api06 branch to trunk.

File size: 931 bytes
Line 
1module ActiveRecord
2  module Validations
3    module ClassMethods
4     
5      # error message when invalid UTF-8 is detected
6      @@invalid_utf8_message = " is invalid UTF-8"
7
8      ##
9      # validation method to be included like any other validations methods
10      # in the models definitions. this one checks that the named attribute
11      # is a valid UTF-8 format string.
12      def validates_as_utf8(*attrs)
13        validates_each(attrs) do |record, attr, value|
14          record.errors.add(attr, @@invalid_utf8_message) unless valid_utf8? value
15        end
16      end   
17     
18      ##
19      # Checks that a string is valid UTF-8 by trying to convert it to UTF-8
20      # using the iconv library, which is in the standard library.
21      def valid_utf8?(str)
22        return true if str.nil?
23        Iconv.conv("UTF-8", "UTF-8", str)
24        return true
25
26      rescue
27        return false
28      end 
29     
30    end
31  end
32end
Note: See TracBrowser for help on using the repository browser.