Mongoid obsługuje teraz pola dynamiczne. Ich dokumentację można znaleźć tutaj:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields
Zasadniczo ostrzega, że musisz być nieco ostrożny podczas ustawiania pól dynamicznych, ponieważ spowoduje to błąd braku metody, jeśli spróbujesz użyć metod pobierających i ustawiających dla pola, które nie istniało w dokumencie.
[],[]=są skrótami do read_attribute(),write_attribute() i powinny być używane, jeśli nie ustawisz dynamic_attributes = true
w twoim pliku ./config/mongoid.yml file
, w przeciwnym razie pojawi się błąd braku metody.
Ustawienie allow_dynamic_fields: true
może być ryzykowne, ponieważ możesz zanieczyścić swoje dane/schemat niezamierzonymi polami spowodowanymi błędami w kodzie. Prawdopodobnie bezpieczniej jest ustawić to na false
i wyraźnie użyj [],[]=
# 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")