Mongoid stöder nu Dynamic Fields. Deras dokumentation finns här:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
I grund och botten varnar den för att du måste vara lite försiktig med hur du ställer in dynamiska fält eftersom det kommer att ge ett felmeddelande om ingen metod om du försöker använda getter- och setter-metoderna för ett fält som inte fanns i dokumentet.
[],[]=är genvägar för read_attribute(),write_attribute() , och bör användas om du inte anger dynamic_attributes = true
i din ./config/mongoid.yml file
, annars får du ett felmeddelande om ingen metod.
Ställer in allow_dynamic_fields: true
kan vara riskabelt, eftersom du kan förorena din data/schema med oavsiktliga fält som orsakas av buggar i din kod. Det är förmodligen säkrare att ställa in detta på false
och använd explicit [],[]=
# 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")