MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Delegat metaklasy nie jest instancją

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.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Konwertuj ciąg na MongoDB BsonDocument

  2. znajdź według $numeru w mongodb

  3. Czy mogę stworzyć bazę klas ruby?

  4. globalne pole autoinkrementacji w MongoDb

  5. mongodb wiele agregacji w jednej operacji