class ActiveRecord::AttributeMethods::TimeZoneConversion::TimeZoneConverter
:nodoc:
def self.new(subtype)
def self.new(subtype) self === subtype ? subtype : super end
def ==(other)
def ==(other) other.is_a?(self.class) && __getobj__ == other.__getobj__ end
def cast(value)
def cast(value) return if value.nil? if value.is_a?(Hash) set_time_zone_without_conversion(super) elsif value.respond_to?(:in_time_zone) begin super(user_input_in_time_zone(value)) || super rescue ArgumentError nil end elsif value.respond_to?(:infinite?) && value.infinite? value else map(super) { |v| cast(v) } end end
def convert_time_to_time_zone(value)
def convert_time_to_time_zone(value) return if value.nil? if value.acts_like?(:time) value.in_time_zone elsif value.respond_to?(:infinite?) && value.infinite? value else map(value) { |v| convert_time_to_time_zone(v) } end end
def deserialize(value)
def deserialize(value) convert_time_to_time_zone(super) end
def set_time_zone_without_conversion(value)
def set_time_zone_without_conversion(value) ::Time.zone.local_to_utc(value).try(:in_time_zone) if value end