Module: PropertySets::Casting

Defined in:
lib/property_sets/casting.rb

Class Method Summary collapse

Class Method Details

.read(type, value) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/property_sets/casting.rb', line 6

def self.read(type, value)
  return nil if value.nil?

  case type
    when :string
      value
    when :datetime
      Time.parse(value).in_time_zone
    when :float
      value.to_f
    when :integer
      value.to_i
    when :boolean
      ![ "false", "0", "", "off", "n" ].member?(value.to_s.downcase)
    when :serialized
      # deserialization happens in the model
      value
  end
end

.write(type, value) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/property_sets/casting.rb', line 26

def self.write(type, value)
  return nil if value.nil?

  case type
    when :datetime
      if value.is_a?(String)
        value
      else
        value.in_time_zone("UTC").to_s
      end
    when :serialized
      # write the object directly.
      value
    else
      value.to_s
  end
end