Mongoid ondersteunt nu dynamische velden. Hun documentatie is hier te vinden:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
Het waarschuwt in feite dat je een beetje voorzichtig moet zijn met het instellen van dynamische velden, omdat het een no method-fout zal veroorzaken als je probeert de getter- en setter-methoden te gebruiken voor een veld dat niet in het document bestond.
[],[]=zijn sneltoetsen voor read_attribute(),write_attribute() , en moeten worden gebruikt als u dynamic_attributes = true
niet instelt in uw ./config/mongoid.yml file
, anders krijg je een 'geen methode'-fout.
Instelling allow_dynamic_fields: true
kan riskant zijn, omdat u uw gegevens/schema kunt vervuilen met onbedoelde velden die worden veroorzaakt door bugs in uw code. Het is waarschijnlijk veiliger om dit in te stellen op false
en gebruik expliciet [],[]=
# Raise a NoMethodError if value isn't set.
person.gender
person.gender = "Male"
# Retrieve a dynamic field safely.
person[:gender]
person.read_attribute(:gender)
# Write a dynamic field safely.
person[:gender] = "Male"
person.write_attribute(:gender, "Male")