From d1e4f434157a8f8560c5fd9fc65a4280ec95bc86 Mon Sep 17 00:00:00 2001 From: Hector E. Gomez Morales Date: Fri, 10 Apr 2009 10:30:43 -0500 Subject: [PATCH] Use ActiveSupport::Multibyte::Chars#downcase for strings in ruby 1.9.1. Added test to check the correct encoding of attributes values. --- activerecord/lib/active_record/validations.rb | 4 ++++ activerecord/test/cases/encoding_test.rb | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 0 deletions(-) create mode 100644 activerecord/test/cases/encoding_test.rb diff --git a/activerecord/lib/active_record/validations.rb b/activerecord/lib/active_record/validations.rb index d2d12b8..efbdede 100644 --- a/activerecord/lib/active_record/validations.rb +++ b/activerecord/lib/active_record/validations.rb @@ -736,6 +736,10 @@ module ActiveRecord if value.nil? || (configuration[:case_sensitive] || !column.text?) condition_sql = "#{sql_attribute} #{comparison_operator}" condition_params = [value] + elsif '1.9'.respond_to?(:encoding) + condition_sql = "LOWER(#{sql_attribute}) #{comparison_operator}" + nvalue = ActiveSupport::Multibyte::Chars.new(value) + condition_params = [nvalue.downcase] else condition_sql = "LOWER(#{sql_attribute}) #{comparison_operator}" condition_params = [value.mb_chars.downcase] diff --git a/activerecord/test/cases/encoding_test.rb b/activerecord/test/cases/encoding_test.rb new file mode 100644 index 0000000..6d4d5c3 --- /dev/null +++ b/activerecord/test/cases/encoding_test.rb @@ -0,0 +1,20 @@ +require 'cases/helper' +require 'models/topic' + +class EncodingUTF8Test < ActiveRecord::TestCase + fixtures :topics + + if '1.9'.respond_to?(:encoding) + + def setup + @first = Topic.find(1) + @utf8_encoding = Encoding.find('utf-8') + end + + def test_attribute_value_is_utf8 + assert_equal @utf8_encoding, @first.title.encoding + end + + end + +end -- 1.6.2.2