diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2016-01-08 14:09:31 -0700 |
---|---|---|
committer | Sean Griffin <sean@seantheprogrammer.com> | 2016-01-08 14:11:45 -0700 |
commit | 302e92359cc88258ae15a82454c58408a4b8157e (patch) | |
tree | bec6f312290020841080ccca0878fd2f2bf57fe5 /activemodel/lib | |
parent | c1a1595740b243bed02f5e59090cc58dac77bbf3 (diff) | |
download | rails-302e92359cc88258ae15a82454c58408a4b8157e.tar.gz rails-302e92359cc88258ae15a82454c58408a4b8157e.tar.bz2 rails-302e92359cc88258ae15a82454c58408a4b8157e.zip |
Refactor tz aware types, add support for PG ranges
This is an alternate implementation to #22875, that generalizes a lot of
the logic that type decorators are going to need, in order to have them
work with arrays, ranges, etc. The types have the ability to map over a
value, with the default implementation being to just yield that given
value. Array and Range give more appropriate definitions.
This does not automatically make ranges time zone aware, as they need to
be added to the `time_zone_aware` types config, but we could certainly
make that change if we feel it is appropriate. I do think this would be
a breaking change however, and should at least have a deprecation cycle.
Closes #22875.
/cc @matthewd
Diffstat (limited to 'activemodel/lib')
-rw-r--r-- | activemodel/lib/active_model/type/value.rb | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/activemodel/lib/active_model/type/value.rb b/activemodel/lib/active_model/type/value.rb index 9d1f267b41..0d2d6873a8 100644 --- a/activemodel/lib/active_model/type/value.rb +++ b/activemodel/lib/active_model/type/value.rb @@ -84,6 +84,10 @@ module ActiveModel false end + def map(value) # :nodoc: + yield value + end + def ==(other) self.class == other.class && precision == other.precision && |