Method: ACTV::Base.define_attribute_method
- Defined in:
- lib/actv/base.rb
.define_attribute_method(key1, klass = nil, key2 = nil) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/actv/base.rb', line 52 def self.define_attribute_method(key1, klass=nil, key2=nil) define_method(key1) do memoize(key1) do if klass.nil? @attrs[key1] else if @attrs[key1] if key2.nil? ACTV.const_get(klass).new(@attrs[key1]) else attrs = @attrs.dup value = attrs.delete(key1) ACTV.const_get(klass).new(value.update(key2 => attrs)) end else ACTV::NullObject.instance end end end end end |