Problem polega na tym, że twoja koncepcja jest całkowicie błędna. Przypisujesz mapę do klasy, a nie do instancji za pomocą tego wiersza:
User.metaClass.dynamicAttributes = [:]
Aby osiągnąć to, czego szukasz, musisz wykonać następujące czynności:
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
}
Jestem pewien, że jest na to czystszy sposób, ale powyższe pokazuje rozwiązanie, w którym mapa jest instancja na instancję, a nie we wszystkich instancjach.