78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/serializable_data.rb', line 78
def serialized_data(data_column, attributes)
serialize data_column
self._data_column = data_column
self._data_attributes = []
attributes.each do |name, type|
self._data_attributes << name
define_method("#{name}=") do |value|
current_value = self.send(data_column)
value = self.class.to_bool(value) if type == :boolean
new_value = current_value.merge(name => value)
self.send("#{data_column}=", new_value)
end
if type == :array
define_method(name) {
data = self.send(data_column)
data && data[name] || []
}
else
define_method(name) {
data = self.send(data_column)
data ? data[name] : nil
}
end
alias_method("#{name}?", name) if type == :boolean
end
end
|