Mongoid prend désormais en charge les champs dynamiques. Leur documentation peut être trouvée ici :http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
Fondamentalement, il avertit que vous devez faire attention à la manière dont vous définissez les champs dynamiques, car cela déclenchera une erreur d'absence de méthode si vous essayez d'utiliser les méthodes getter et setter pour un champ qui n'existait pas dans le document.
[],[]=sont des raccourcis pour read_attribute(),write_attribute() , et doivent être utilisés si vous ne définissez pas dynamic_attributes = true
dans votre fichier ./config/mongoid.yml file
, sinon vous obtiendrez une erreur d'absence de méthode.
Définition de allow_dynamic_fields: true
peut être risqué, car vous pourriez polluer vos données/schéma avec des champs involontaires causés par des bogues dans votre code. Il est probablement plus sûr de définir ceci sur false
et utilisez explicitement [],[]=
# 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")