diff options
Diffstat (limited to 'config')
| -rw-r--r-- | config/initializers/postgresql_adapter_patch.rb | 71 |
1 files changed, 20 insertions, 51 deletions
diff --git a/config/initializers/postgresql_adapter_patch.rb b/config/initializers/postgresql_adapter_patch.rb index 3c6530bef..bb8dbe17b 100644 --- a/config/initializers/postgresql_adapter_patch.rb +++ b/config/initializers/postgresql_adapter_patch.rb @@ -1,54 +1,23 @@ -# module ::ArJdbc -# module PostgreSQL -# def quote_column_name(name) -# if name.is_a?(Array) -# name.collect { |n| %("#{n.to_s.gsub("\"", "\"\"")}") }.join(',') -# else -# %("#{name.to_s.gsub("\"", "\"\"")}") -# end -# end -# end -# end -# ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:primary_key] = "bigserial primary key" +# Transform Wed, 22 Feb 2017...Fri, 24 Feb 201 into Wed, 22 Feb 2017..Thu, 23 Feb 201 +module ActiveRecord::ConnectionAdapters::PostgreSQL::OID + class DateRange < Range + def cast_value(value) + result = super value -# Add missing double-quote to write array of daterange in SQL query -# See #1782 + if result.respond_to?(:exclude_end?) && result.exclude_end? + ::Range.new(result.begin, result.end - 1, false) + else + result + end + end + end +end -# class ActiveRecord::ConnectionAdapters::PostgreSQLColumn +ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.class_eval do + def initialize_type_map_with_daterange mapping + initialize_type_map_without_daterange mapping + mapping.register_type 3912, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::DateRange.new(mapping.lookup('date'), :daterange) + end -# def self.array_to_string(value, column, adapter) -# casted_values = value.map do |val| -# if String === val -# if val == "NULL" -# "\"#{val}\"" -# else -# quote_and_escape(adapter.type_cast(val, column, true)) -# end -# elsif Range === val -# casted_value = adapter.type_cast(val, column, true) -# "\"#{casted_value}\"" -# else -# adapter.type_cast(val, column, true) -# end -# end -# "{#{casted_values.join(',')}}" -# end - -# end - -# module ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::OID -# class DateRange < Range -# # Unnormalize daterange -# # [2016-11-19,2016-12-26) -> 2016-11-19..2016-12-25 -# def type_cast(value) -# result = super value - -# if result.respond_to?(:exclude_end?) && result.exclude_end? -# ::Range.new(result.begin, result.end - 1, false) -# else -# result -# end -# end -# end -# register_type 'daterange', DateRange.new(:date) -# end + alias_method_chain :initialize_type_map, :daterange +end |
