Problemet her er, at dit koncept er fuldstændig mangelfuldt. Du tildeler et kort til klassen og ikke instansen med denne linje:
User.metaClass.dynamicAttributes = [:]
For at opnå det, du søger, skal du gøre følgende:
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
}
Jeg er sikker på, at der er en renere måde at gøre dette på, men ovenstående demonstrerer en løsning, hvor kortet instanseres pr. instans og ikke på tværs af alle instanser.