module RailsConnector # Adds support for string columns which contain ISO dates module DateAttribute module ClassMethods def date_attribute(*names) names.each do |name| module_eval %Q! def #{name} DateAttribute.parse(#{name}_before_type_cast) unless #{name}_before_type_cast.nil? end ! end end end def self.included(base) base.extend(ClassMethods) end def self.parse(iso_date_time) Time.from_iso(iso_date_time).in_time_zone rescue ArgumentError raise "The value is not a valid ISO date time: #{iso_date_time.inspect}" end end end