Module: Disposable::Twin::Property::Unnest

Included in:
Disposable::Twin
Defined in:
lib/disposable/twin/property/unnest.rb

Instance Method Summary collapse

Instance Method Details

#unnest(name, options) ⇒ Object

TODO: test that nested properties options are “unnested”, too, e.g. populator.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/disposable/twin/property/unnest.rb', line 5

def unnest(name, options)
  from = options.delete(:from)
  # needed to make reform process this field.

  options = definitions.get(from)[:nested].definitions.get(name).instance_variable_get(:@options) # FIXME.
  options = options.merge(virtual: true, _inherited: true, private_name: nil)

  property(name, options)
  # def_delegators from, name, "#{name}=" # FIXME: this overwrites ActiveSupport#delegate in some cases.

  define_method name do
    send(from).send(name) # TODO: fix Forwardable in Ruby.
  end

  define_method "#{name}=" do |value|
    send(from).send("#{name}=", value)
  end
end