diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2016-11-17 14:56:38 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-17 14:56:38 -0500 |
commit | 4331ee8390908e52e56cf62b2759a152cddfe1b2 (patch) | |
tree | 8969fab99837eeb8a29660d3d4cfc785daef4d99 | |
parent | 07af54d43cba30be7c206c5783ae15ab2cf37aa3 (diff) | |
parent | 70878b6e82fb33f769ab62d43c3dcf0267a3c618 (diff) | |
download | rails-4331ee8390908e52e56cf62b2759a152cddfe1b2.tar.gz rails-4331ee8390908e52e56cf62b2759a152cddfe1b2.tar.bz2 rails-4331ee8390908e52e56cf62b2759a152cddfe1b2.zip |
Merge pull request #27076 from y-yagi/fix_postgresql_array_encoding
use `force_encoding` instread of `encode!` to avoid `UndefinedConversionError`
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb | 2 | ||||
-rw-r--r-- | activerecord/test/cases/adapters/postgresql/array_test.rb | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb index b969503178..d9daaaa23e 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb @@ -35,7 +35,7 @@ module ActiveRecord if value.is_a?(::Array) result = @pg_encoder.encode(type_cast_array(value, :serialize)) if encoding = determine_encoding_of_strings(value) - result.encode!(encoding) + result.force_encoding(encoding) end result else diff --git a/activerecord/test/cases/adapters/postgresql/array_test.rb b/activerecord/test/cases/adapters/postgresql/array_test.rb index d741ca4389..680dad9706 100644 --- a/activerecord/test/cases/adapters/postgresql/array_test.rb +++ b/activerecord/test/cases/adapters/postgresql/array_test.rb @@ -312,9 +312,9 @@ class PostgresqlArrayTest < ActiveRecord::PostgreSQLTestCase end def test_encoding_arrays_of_utf8_strings - string_with_utf8 = "nový" - assert_equal [string_with_utf8], @type.deserialize(@type.serialize([string_with_utf8])) - assert_equal [[string_with_utf8]], @type.deserialize(@type.serialize([[string_with_utf8]])) + arrays_of_utf8_strings = %w(nový ファイル) + assert_equal arrays_of_utf8_strings, @type.deserialize(@type.serialize(arrays_of_utf8_strings)) + assert_equal [arrays_of_utf8_strings], @type.deserialize(@type.serialize([arrays_of_utf8_strings])) end private |