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")