Module: StoreComplex::Accessor

Defined in:
lib/store_complex.rb

Instance Method Summary collapse

Instance Method Details

#store_complex(store_name, *attr_names) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/store_complex.rb', line 17

def store_complex(store_name,*attr_names)
  attr_names.each do |name|
    attr_set = name.to_s+'='
    
    define_method(name) do
      value = (self.send(store_name) || {})[name.to_s]
      ObservableObject::deep_wrap( StoreComplex::store_to_obj(value) ) { |obj| self.send(attr_set, obj) }
    end
    
    define_method(attr_set) do |value|
      store = self.send(store_name) || {}
      store[name.to_s] = StoreComplex::obj_to_store(value)
      self.send(store_name.to_s+'=',store)
    end
  end
end