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
35
36
37
38
39
40
|
# File 'lib/sequel_dynamic_column.rb', line 8
def self.configure(model, opts = {})
config = nil
if block_given?
config = Config.new
yield config
else
config = Config.new(opts)
end
model.instance_eval do
@dynamic_column_config = config
class << self
attr_accessor :dynamic_column_config
end
config.dynamic_columns.each do |field|
field_str = field.to_s
define_method "#{field}" do
self.send(config.storage_column)[field_str]
end
define_method("#{field}=") do |val|
storage_column_val = self.send(config.storage_column) || {}
self.send("#{config.storage_column}=", storage_column_val)
storage_column_val[field_str] = val
end
end
end
end
|