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
# 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"
				(self[:value] == 1)
			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



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/has_dynamic_columns/dynamic_column_datum.rb', line 32

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
			when "integer"
				self[:value] = v
			when "date"
				self[:value] = v
			when "string"
				self[:value] = v
		end
	else
		self[:value] = v
	end
end