MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Metaclasse delegado não sendo instância


A questão aqui é que seu conceito é completamente falho. Você está atribuindo um mapa à classe e não à instância com esta linha:
User.metaClass.dynamicAttributes = [:]

Para realizar o que você está procurando, você precisa fazer o seguinte:
User.metaClass.propertyMissing = { String name ->
  if (!delegate.dynamicAttributes) delegate.dynamicAttributes = [:]
  delegate.dynamicAttributes[name] 
}  
User.metaClass.propertyMissing = { String name, value ->     
  if (!delegate.dynamicAttributes) delegate.dynamicAttributes = [:]
  delegate.dynamicAttributes[name] = value 
}

Tenho certeza de que há uma maneira mais limpa de fazer isso, mas o exemplo acima demonstra uma solução em que o mapa é instanciado por instância e não em todas as instâncias.