aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorbUg <slbug@users.noreply.github.com>2016-05-15 15:00:10 +0300
committerAlexander Grebennik <aleks.grebennik@gmail.com>2016-05-15 16:14:57 +0300
commite3cd321d4bbf7e76ed72507bd991011daf8516d0 (patch)
tree890179992c61a9f0f4ae7346ca122a36b087ff41 /activerecord
parent0827f9932f75360dc4a7db8046d08d55055e8526 (diff)
downloadrails-e3cd321d4bbf7e76ed72507bd991011daf8516d0.tar.gz
rails-e3cd321d4bbf7e76ed72507bd991011daf8516d0.tar.bz2
rails-e3cd321d4bbf7e76ed72507bd991011daf8516d0.zip
Rails 5.1 point type should not raise exception if empty string is provided as value
Diffstat (limited to 'activerecord')
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb2
-rw-r--r--activerecord/test/cases/adapters/postgresql/geometric_test.rb7
2 files changed, 9 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb b/activerecord/lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb
index 7427a25ad5..4da240edb2 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/rails_5_1_point.rb
@@ -14,6 +14,8 @@ module ActiveRecord
def cast(value)
case value
when ::String
+ return if value.blank?
+
if value[0] == '(' && value[-1] == ')'
value = value[1...-1]
end
diff --git a/activerecord/test/cases/adapters/postgresql/geometric_test.rb b/activerecord/test/cases/adapters/postgresql/geometric_test.rb
index 9e250c2b7c..66f0a70394 100644
--- a/activerecord/test/cases/adapters/postgresql/geometric_test.rb
+++ b/activerecord/test/cases/adapters/postgresql/geometric_test.rb
@@ -104,6 +104,13 @@ class PostgresqlPointTest < ActiveRecord::PostgreSQLTestCase
assert_equal ActiveRecord::Point.new(1, 2), p.x
end
+ def test_empty_string_assignment
+ assert_nothing_raised { PostgresqlPoint.new(x: "") }
+
+ p = PostgresqlPoint.new(x: "")
+ assert_equal nil, p.x
+ end
+
def test_array_of_points_round_trip
expected_value = [
ActiveRecord::Point.new(1, 2),