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