Class: HasDynamicColumns::DynamicColumnDatum

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/has_dynamic_columns/dynamic_column_datum.rb

Instance Method Summary collapse

Instance Method Details

#valueObject

Get value based on dynamic_column data_type



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/has_dynamic_columns/dynamic_column_datum.rb', line 8

def value
  if self.dynamic_column
    case self.dynamic_column.data_type
      when "list"
        if self.dynamic_column_option
          self.dynamic_column_option.key
        end
      when "datetime"
        self[:value]
      when "boolean"

        if self[:value].is_a?(TrueClass) || self[:value].is_a?(FalseClass)
          self[:value]
        else
          self[:value].to_i === 1
        end
      when "integer"
        self[:value]
      when "date"
        self[:value]
      when "string"
        self[:value]
    end
  else
    self[:value]
  end
end

#value=(v) ⇒ Object

Set value base don dynamic_column data_type



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/has_dynamic_columns/dynamic_column_datum.rb', line 37

def value=v
  if self.dynamic_column
    case self.dynamic_column.data_type
      when "list"
        # Can only set the value to one of the option values
        if option = self.dynamic_column.dynamic_column_options.select { |i| i.key == v }.first
          self.dynamic_column_option = option
        else
          # Hacky, -1 indicates to the validator that an invalid option was set
          self.dynamic_column_option = nil
          self.dynamic_column_option_id = (v.to_s.length > 0)? -1 : nil
        end
      when "datetime"
        self[:value] = v
      when "boolean"
        self[:value] = (v)? 1 : 0
      when "integer"
        self[:value] = v
      when "date"
        self[:value] = v
      when "string"
        self[:value] = v
    end
  else
    self[:value] = v
  end
end