Module: FeideeUtils::Record::Computed::ClassMethods

Included in:
FeideeUtils::Record
Defined in:
lib/feidee_utils/record/computed.rb

Instance Method Summary collapse

Instance Method Details

#computed(field_name, &block) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
# File 'lib/feidee_utils/record/computed.rb', line 5

def computed field_name, &block
  var_name = ("@" + field_name.to_s).to_sym
  define_method field_name do
    if instance_variable_defined? var_name
      instance_variable_get var_name
    else
      val = instance_exec &block
      instance_variable_set var_name, val
    end
  end
end