MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Attributs dynamiques avec Rails et Mongoid

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")