3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/simple_value/model.rb', line 3
def value_object(attr_name, value_class, validate: false, value: :value)
attr_reader "#{attr_name}_object"
object_writer = "#{attr_name}_object=".to_sym
instance_reader = "@#{attr_name}_object".to_sym
define_method "#{attr_name}_object=" do |val|
instance_variable_set instance_reader, val
self[attr_name] = val.send value
end
define_method "#{attr_name}=" do |val|
send object_writer, value_class.new(val)
end
after_initialize do
send object_writer, value_class.new(self[attr_name])
end
return unless validate
validates_with Validator, "#{attr_name}_object".to_sym => attr_name
end
|