MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Dynamische Attribute mit Rails und Mongoid

Mongoid unterstützt jetzt dynamische Felder. Ihre Dokumentation finden Sie hier:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields

Grundsätzlich warnt es, dass Sie etwas vorsichtig sein müssen, wie Sie dynamische Felder setzen, da es einen No-Method-Fehler auslösen wird, wenn Sie versuchen, die Getter- und Setter-Methoden für ein Feld zu verwenden, das nicht im Dokument existiert.

[],[]=sind Abkürzungen für read_attribute(),write_attribute() und sollten verwendet werden, wenn Sie dynamic_attributes = true nicht festlegen in Ihrer ./config/mongoid.yml file , andernfalls erhalten Sie einen No-Method-Fehler.

Einstellung allow_dynamic_fields: true kann riskant sein, da Sie Ihre Daten/Ihr Schema mit unbeabsichtigten Feldern verunreinigen könnten, die durch Fehler in Ihrem Code verursacht werden. Es ist wahrscheinlich sicherer, dies auf false zu setzen und verwenden Sie explizit [],[]=

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