Sha256: ad1d8e957752903695368162b46d0b6c32f707238e72e83f0accd09a6b0ebed8
Contents?: true
Size: 1.1 KB
Versions: 11
Compression:
Stored size: 1.1 KB
Contents
module Scrivito # Adds support for string columns which contain ISO dates module DateAttribute def self.deserialize_from_backend(iso_date_time) return nil unless iso_date_time if iso_date_time.to_s =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/ Time.utc($1.to_i, $2.to_i, $3.to_i, $4.to_i, $5.to_i, $6.to_i).in_time_zone else raise "The value is not a valid ISO date time: #{iso_date_time.inspect}" end end def self.deserialize_from_client(iso8601_date_time) return unless iso8601_date_time DateTime.iso8601(iso8601_date_time).in_time_zone rescue ArgumentError raise "The value is not a valid ISO 8601 date time: #{iso8601_date_time.inspect}" end def self.serialize_for_backend(attribute_value) attribute_value = case attribute_value when Date then attribute_value.to_time when Time then attribute_value.to_time.utc end attribute_value.strftime('%Y%m%d%H%M%S') if attribute_value end def self.serialize_for_client(attribute_value) attribute_value.utc.iso8601 end end end
Version data entries
11 entries across 11 versions & 1 rubygems