Module: ActiveRecord::ZonelessTimeSupport

Defined in:
lib/active_record/zoneless_time_support.rb

Instance Method Summary collapse

Instance Method Details

#zoneless_time(sym) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/active_record/zoneless_time_support.rb', line 3

def zoneless_time(sym)
  instance_eval do
    define_method sym do
      t = instance_variable_get(:"@#{sym}")

      if t.nil?
        t = ZonelessTime::TimeWithoutZone.at(read_attribute(sym.to_s))
        instance_variable_set(:"@#{sym}", t)
      end

      t
    end

    self.skip_time_zone_conversion_for_attributes << sym

    define_method "#{sym}=" do |val|
      if val.is_a? ZonelessTime::TimeWithoutZone
        super val
      else
        super ZonelessTime::TimeWithoutZone.at(val)
      end

      instance_variable_set(:"@#{sym}", nil)
      send sym
    end
  end
end