sql >> Base de Datos >  >> NoSQL >> MongoDB

establecer valores de campo hash mongoid

Lo que pasa con el campo Hash es que puede ser tan dinámico como quieras. Por lo tanto, para evitar contaminar su esquema de base de datos con campos no deseados causados ​​por errores en su código, esta funcionalidad está deshabilitada de manera predeterminada.

¡No, no estás atascado usando actualizaciones de 2 pasos para tus hashes!

[],[]=son los atajos para read_attribute() y write_attribute() y debe usarse si no incluye Mongoid::Attributes::Dynamic . Si intenta usar $set sin habilitar los atributos dinámicos obtendrá un error sin método porque no ve sus atributos dinámicos como atributos definidos.

Si lee la fuente de Mongoid::Atributos::Dinámico entonces encontrará que esto es necesario para agregar la funcionalidad de atributos dinámicos.

Para actualizar los valores incluyendo Mongoid::Attributes::Dynamic debes seguir estos pasos:

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

De lo contrario, si lo necesita, puede omitir esto fácilmente y actualizar el valor mediante el método de 2 pasos

Espero que esto arroje algo de luz sobre tu consulta.

Fuente:

Campos dinámicos de Rails mongoid:sin error de método

Atributos dinámicos con Rails y Mongoid