diff options
| author | Robert | 2017-04-20 08:19:12 +0200 |
|---|---|---|
| committer | Robert | 2017-04-20 08:32:39 +0200 |
| commit | f590d7b18c7e980ce7e93e96ae3b45fce310675f (patch) | |
| tree | 2e2c7034580e632d20617e9e507b7a71e3bc0d20 | |
| parent | b767e3c006e9eeee22e2de939605203d8cb99f32 (diff) | |
| download | chouette-core-f590d7b18c7e980ce7e93e96ae3b45fce310675f.tar.bz2 | |
custom attribute daterange for referential_metadata
| -rw-r--r-- | app/models/referential_metadata.rb | 18 | ||||
| -rw-r--r-- | config/initializers/postgresql_adapter_patch.rb | 3 |
2 files changed, 20 insertions, 1 deletions
diff --git a/app/models/referential_metadata.rb b/app/models/referential_metadata.rb index 62faf5541..d79c0d839 100644 --- a/app/models/referential_metadata.rb +++ b/app/models/referential_metadata.rb @@ -12,6 +12,24 @@ class ReferentialMetadata < ActiveRecord::Base scope :include_lines, -> (line_ids) { where('line_ids && ARRAY[?]::bigint[]', line_ids) } scope :include_dateranges, -> (dateranges) { where('periodes && ARRAY[?]', dateranges) } + def periodes + attributes["periodes"].tap do | periods | + return periods unless periods + return adapted_periods(periods) + end + end + + def adapted_periods(periods) + periods.map do | period | + if period.try(:exclude_end?) + period.begin .. (period.end - 1) + else + period + end + end + end + private :adapted_periods + class Period include ActiveAttr::Model include ActiveAttr::MultiParameterAttributes diff --git a/config/initializers/postgresql_adapter_patch.rb b/config/initializers/postgresql_adapter_patch.rb index bb8dbe17b..46066fbbf 100644 --- a/config/initializers/postgresql_adapter_patch.rb +++ b/config/initializers/postgresql_adapter_patch.rb @@ -16,7 +16,8 @@ end 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) + # mapping.register_type 3912, ActiveRecord::ConnectionAdapters::PostgreSQL::OID::DateRange.new(mapping.lookup('date'), :daterange) + mapping.register_type 'daterange', ActiveRecord::ConnectionAdapters::PostgreSQL::OID::DateRange.new(mapping.lookup('date'), :daterange) end alias_method_chain :initialize_type_map, :daterange |
