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

définition des valeurs de champ de hachage mongoid

Le truc avec le champ Hash, c'est qu'il peut être dynamique autant que vous le souhaitez. Par conséquent, pour éviter de polluer votre schéma de base de données avec des champs involontaires causés par des bogues dans votre code, cette fonctionnalité est désactivée par défaut.

Non, vous n'êtes pas du tout obligé d'utiliser des mises à jour en 2 étapes pour vos hachages !

[],[]=sont les raccourcis pour read_attribute() et write_attribute() et doit être utilisé si vous n'incluez pas Mongoid::Attributes::Dynamic . Si vous essayez d'utiliser $set sans activer les attributs dynamiques, vous obtiendrez une erreur sans méthode car il ne voit pas vos attributs dynamiques comme des attributs définis.

Si vous lisez la source de Mongoid ::Attributs ::Dynamique alors vous constaterez que cela est nécessaire pour ajouter la fonctionnalité d'attributs dynamiques.

Pour mettre à jour les valeurs en incluant Mongoid::Attributes::Dynamic vous devez suivre ces étapes :

thing = Thing.first
thing.set("info.endDate" => Time.now)
thing.reload # This will update the current variable 

Sinon, si vous en avez besoin, vous pouvez facilement ignorer cela et effectuer la mise à jour de la valeur par la méthode en 2 étapes

J'espère que cela éclairera votre requête.

Origine :

Champs dynamiques mongoid Rails - aucune erreur de méthode

Attributs dynamiques avec Rails et Mongoid