MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

definindo valores de campo de hash mongoid


O problema com o campo Hash é que ele pode ser dinâmico o quanto você quiser. Portanto, para evitar poluir seu esquema de banco de dados com campos não intencionais causados ​​por bugs em seu código, essa funcionalidade é desabilitada por padrão.

Não, você não está preso usando atualizações em duas etapas para seus hashes!

[],[]=são os atalhos para read_attribute() e write_attribute() e deve ser usado se você não incluir Mongoid::Attributes::Dynamic . Se você tentar usar $set sem habilitar atributos dinâmicos, você receberá um erro sem método porque não vê seus atributos dinâmicos como atributos definidos.

Se você ler a fonte de Mongoid::Atributos::Dinâmico então você descobriria que isso é necessário para adicionar a funcionalidade de atributos dinâmicos.

Para atualizar os valores incluindo Mongoid::Attributes::Dynamic você precisa seguir estes passos:
thing = Thing.first
thing.set("info.endDate" => Time.now)
thing.reload # This will update the current variable 

Caso contrário, se você precisar, pode pular isso facilmente e fazer a atualização de valor pelo método de 2 etapas

Espero que isso esclareça sua dúvida.

Fonte:

Campos dinâmicos mongoides do Rails - sem erro de método

Atributos dinâmicos com Rails e Mongoid