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

Atributos dinâmicos com Rails e Mongoid


Mongoid agora suporta Campos Dinâmicos. Sua documentação pode ser encontrada aqui:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields

Basicamente, ele avisa que você deve ter um pouco de cuidado ao definir os campos dinâmicos, pois isso gerará um erro de nenhum método se você tentar usar os métodos getter e setter para um campo que não existia no documento.

[],[]=são atalhos para read_attribute(),write_attribute() , e devem ser usados ​​se você não definir dynamic_attributes = true em seu arquivo ./config/mongoid.yml file , caso contrário, você receberá um erro sem método.

Configurando allow_dynamic_fields: true pode ser arriscado, pois você pode poluir seus dados/esquema com campos não intencionais causados ​​por bugs em seu código. Provavelmente é mais seguro definir isso como false e use explicitamente [],[]=
# Raise a NoMethodError if value isn't set.
person.gender
person.gender = "Male"

# Retrieve a dynamic field safely.
person[:gender]
person.read_attribute(:gender)

# Write a dynamic field safely.
person[:gender] = "Male"
person.write_attribute(:gender, "Male")