MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

impostazione dei valori dei campi hash mongoidi

Il problema con il campo Hash è che può essere dinamico quanto vuoi. Pertanto, per evitare di inquinare il tuo schema DB con campi non intenzionali causati da bug nel tuo codice, questa funzionalità è disabilitata per impostazione predefinita.

No, non sei affatto bloccato nell'usare gli aggiornamenti in 2 passaggi per i tuoi hash!

[],[]=sono le scorciatoie per read_attribute() e write_attribute() e dovrebbe essere usato se non includi Mongoid::Attributes::Dynamic . Se provi a usare $set senza abilitare gli attributi dinamici otterrai un errore senza metodo perché non vede i tuoi attributi dinamici come attributi definiti.

Se leggi la fonte di Mongoid::Attributi::Dinamico quindi scopriresti che questo è necessario per aggiungere la funzionalità degli attributi dinamici.

Per aggiornare i valori includendo Mongoid::Attributes::Dynamic devi seguire questi passaggi:

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

Altrimenti, se necessario, puoi facilmente saltare questo ed eseguire l'aggiornamento del valore con il metodo in 2 passaggi

Spero che questo faccia luce sulla tua domanda.

Fonte:

Campi dinamici mongoidi Rails - nessun errore di metodo

Attributi dinamici con Rails e Mongoid