MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Festlegen von mongoiden Hash-Feldwerten

Die Sache mit dem Hash-Feld ist, dass es so dynamisch sein kann, wie Sie möchten. Um zu verhindern, dass Ihr DB-Schema mit unbeabsichtigten Feldern verschmutzt wird, die durch Fehler in Ihrem Code verursacht werden, ist diese Funktionalität daher standardmäßig deaktiviert.

Nein, Sie müssen überhaupt keine 2-Schritt-Updates für Ihre Hashes verwenden!

[],[]=sind die Abkürzungen für read_attribute() und write_attribute() und sollte verwendet werden, wenn Sie Mongoid::Attributes::Dynamic nicht einschließen . Wenn Sie versuchen, $set zu verwenden ohne dynamische Attribute zu aktivieren, erhalten Sie einen No-Method-Fehler, da Ihre dynamischen Attribute nicht als definierte Attribute angesehen werden.

Wenn Sie die Quelle von Mongoid lesen:Attribute::Dynamisch dann würden Sie feststellen, dass dies erforderlich ist, um die Funktionalität für dynamische Attribute hinzuzufügen.

Zum Aktualisieren der Werte durch Einschließen von Mongoid::Attributes::Dynamic Sie müssen diesen Schritten folgen:

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

Andernfalls können Sie dies bei Bedarf einfach überspringen und die Wertaktualisierung mit der 2-Schritt-Methode durchführen

Ich hoffe, das bringt etwas Licht in Ihre Frage.

Quelle:

Rails mongoide dynamische Felder - kein Methodenfehler

Dynamische Attribute mit Rails und Mongoid