ここでの問題は、あなたのコンセプトに完全な欠陥があるということです。次の行のインスタンスではなく、クラスにマップを割り当てています:
User.metaClass.dynamicAttributes = [:]
あなたが探していることを達成するために、あなたは以下をする必要があります:
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
}
これを行うためのよりクリーンな方法があると確信していますが、上記は、マップがすべてのインスタンスにまたがってではなく、インスタンスごとにインスタンス化されるソリューションを示しています。