aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2016-01-08 14:09:31 -0700
committerSean Griffin <sean@seantheprogrammer.com>2016-01-08 14:11:45 -0700
commit302e92359cc88258ae15a82454c58408a4b8157e (patch)
treebec6f312290020841080ccca0878fd2f2bf57fe5 /activemodel
parentc1a1595740b243bed02f5e59090cc58dac77bbf3 (diff)
downloadrails-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')
-rw-r--r--activemodel/lib/active_model/type/value.rb4
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 &&