diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-05-19 20:39:52 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-05-25 23:55:38 +0900 |
commit | 8a600183550298a1f350a8fa8d72630da607fb60 (patch) | |
tree | 31d1b57cd110c16255a9faeeae89569634b61018 /activerecord/test | |
parent | cd4a88123dc17462d5c2ff29172b0366bca14e0e (diff) | |
download | rails-8a600183550298a1f350a8fa8d72630da607fb60.tar.gz rails-8a600183550298a1f350a8fa8d72630da607fb60.tar.bz2 rails-8a600183550298a1f350a8fa8d72630da607fb60.zip |
Make force equality checking more strictly not to allow serialized attribute
Since #26074, introduced force equality checking to build a predicate
consistently for both `find` and `create` (fixes #27313).
But the assumption that only array/range attribute have subtype was
wrong. We need to make force equality checking more strictly not to
allow serialized attribute.
Fixes #32761.
Diffstat (limited to 'activerecord/test')
-rw-r--r-- | activerecord/test/cases/adapters/postgresql/range_test.rb | 6 | ||||
-rw-r--r-- | activerecord/test/cases/serialized_attribute_test.rb | 7 |
2 files changed, 13 insertions, 0 deletions
diff --git a/activerecord/test/cases/adapters/postgresql/range_test.rb b/activerecord/test/cases/adapters/postgresql/range_test.rb index 261c24634e..433598500d 100644 --- a/activerecord/test/cases/adapters/postgresql/range_test.rb +++ b/activerecord/test/cases/adapters/postgresql/range_test.rb @@ -341,6 +341,12 @@ _SQL assert_equal record, PostgresqlRange.where(int4_range: range).take end + def test_where_by_attribute_with_range_in_array + range = 1..100 + record = PostgresqlRange.create!(int4_range: range) + assert_equal record, PostgresqlRange.where(int4_range: [range]).take + end + def test_update_all_with_ranges PostgresqlRange.create! diff --git a/activerecord/test/cases/serialized_attribute_test.rb b/activerecord/test/cases/serialized_attribute_test.rb index 7de5429cbb..7764a37273 100644 --- a/activerecord/test/cases/serialized_attribute_test.rb +++ b/activerecord/test/cases/serialized_attribute_test.rb @@ -166,6 +166,13 @@ class SerializedAttributeTest < ActiveRecord::TestCase assert_equal topic, Topic.where(content: settings).take end + def test_where_by_serialized_attribute_with_hash_in_array + settings = { "color" => "green" } + Topic.serialize(:content, Hash) + topic = Topic.create!(content: settings) + assert_equal topic, Topic.where(content: [settings]).take + end + def test_serialized_default_class Topic.serialize(:content, Hash) topic = Topic.new |