MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Il delegato di metaclasse non è istanza

Il problema qui è che il tuo concetto è completamente imperfetto. Stai assegnando una mappa alla Classe e non all'istanza con questa riga:

User.metaClass.dynamicAttributes = [:]

Per realizzare ciò che stai cercando di fare, devi fare quanto segue:

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 
}

Sono sicuro che esiste un modo più semplice per farlo, ma quanto sopra mostra una soluzione in cui la mappa viene istanziata per istanza e non in tutte le istanze.