Method: MR::ReadModel::Fields::ClassMethods#json_struct_obj

Defined in:
lib/mr/read_model/fields.rb

#json_struct_obj(name, struct_class) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/mr/read_model/fields.rb', line 51

def json_struct_obj(name, struct_class)
  field     = JsonStructObjField.new(self, name.to_s, struct_class)
  ivar_name = "@#{name}"

  define_method(name) do
    begin
      instance_variable_get(ivar_name) ||
      instance_variable_set(ivar_name, field.reader(self.read_model_data))
    rescue StandardError => exception
      exception.set_backtrace(caller)
      raise exception
    end
  end

  (self.json_struct_objs << field).uniq!
end