diff options
author | Sean Griffin <sean@thoughtbot.com> | 2014-12-08 11:40:41 -0700 |
---|---|---|
committer | Sean Griffin <sean@thoughtbot.com> | 2014-12-08 11:42:29 -0700 |
commit | 4ed60af60d8b0ce6696f03d2d77916713c39af12 (patch) | |
tree | 2ce30cae4b4bc0b461f425437bb57c316002f671 /activerecord/lib | |
parent | d428242c865847f86512b671428f556ab88cc21d (diff) | |
download | rails-4ed60af60d8b0ce6696f03d2d77916713c39af12.tar.gz rails-4ed60af60d8b0ce6696f03d2d77916713c39af12.tar.bz2 rails-4ed60af60d8b0ce6696f03d2d77916713c39af12.zip |
Revert to 4.1 behavior for casting PG arrays
The user is able to pass PG string literals in 4.1, and have it
converted to an array. This is also possible in 4.2, but it would remain
in string form until saving and reloading, which breaks our
`attr = save.reload.attr` contract. I think we should deprecate this in
5.0, and only allow array input from user sources. However, this
currently constitutes a breaking change to public API that did not go
through a deprecation cycle.
Diffstat (limited to 'activerecord/lib')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb | 3 |
1 files changed, 3 insertions, 0 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 cd5efe2bb8..c203e6c604 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql/oid/array.rb @@ -34,6 +34,9 @@ module ActiveRecord end def type_cast_from_user(value) + if value.is_a?(::String) + value = parse_pg_array(value) + end type_cast_array(value, :type_cast_from_user) end |