def method_missing(method_symbol, *arguments)
      self.class.reload_fields_definition(false)
      if id
        rpc_execute(method_symbol, [id], *arguments) #we assume that's an action
      else
        super
      end
    rescue UnknownAttributeOrAssociationError => e
      e.klass = self.class
      raise e
    end
def method_missing(method_symbol, *arguments)
      self.class.reload_fields_definition(false)
      if id
        rpc_execute(method_symbol, [id], *arguments) #we assume that's an action
      else
        super
      end
    rescue UnknownAttributeOrAssociationError => e
      e.klass = self.class
      raise e
    end
# Raise NoMethodError if the named attribute does not exist in order to preserve behavior expected by #clone.
    def attribute(name)
      key = name.to_s
      if self.class.fields.has_key?(key) #TODO check not symbols
        get_attribute(key)
      elsif self.class.associations_keys.index(key)
        get_association(key)
      else
        raise NoMethodError
      end
    end