Problemet här är att ditt koncept är helt felaktigt. Du tilldelar en karta till klassen och inte instansen med denna rad:
User.metaClass.dynamicAttributes = [:]
För att uppnå det du vill göra måste du göra följande:
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
}
Jag är säker på att det finns ett renare sätt att göra detta på, men ovanstående visar en lösning där kartan instanseras per instans och inte över alla instanser.