Het probleem hier is dat uw concept volledig gebrekkig is. U wijst een kaart toe aan de klasse en niet aan de instantie met deze regel:
User.metaClass.dynamicAttributes = [:]
Om te bereiken wat u wilt doen, moet u het volgende doen:
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
}
Ik weet zeker dat er een schonere manier is om dit te doen, maar het bovenstaande toont een oplossing waarbij de kaart per instantie wordt weergegeven en niet voor alle instanties.