Mongoid nyní podporuje dynamická pole. Jejich dokumentaci lze nalézt zde:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
V zásadě vás varuje, že musíte být trochu opatrní při nastavování dynamických polí, protože to způsobí chybu bez metody, pokud se pokusíte použít metody getter a setter pro pole, které v dokumentu neexistovalo.
[],[]=jsou zkratky pro read_attribute(),write_attribute() a měly by být použity, pokud nenastavíte dynamic_attributes = true
ve vašem ./config/mongoid.yml file
, jinak se zobrazí chyba bez metody.
Nastavení allow_dynamic_fields: true
může být riskantní, protože byste mohli znečistit svá data/schéma nechtěnými poli způsobenými chybami ve vašem kódu. Pravděpodobně je bezpečnější nastavit toto na false
a explicitně použijte [],[]=
# 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")