MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Attributi dinamici con Rails e Mongoid

Mongoid ora supporta i campi dinamici. La loro documentazione può essere trovata qui:http://mongoid.org/en/mongoid/docs/documents.html#dynamic_fields

Fondamentalmente avverte che devi stare leggermente attento a come imposti i campi dinamici poiché genererà un errore di metodo no se tenti di utilizzare i metodi getter e setter per un campo che non esisteva nel documento.

[],[]=sono scorciatoie per read_attribute(),write_attribute() e dovrebbero essere usate se non si imposta dynamic_attributes = true nel tuo file ./config/mongoid.yml file , altrimenti riceverai un errore di metodo no.

Impostazione di allow_dynamic_fields: true può essere rischioso, poiché potresti inquinare i tuoi dati/schema con campi non intenzionali causati da bug nel tuo codice. Probabilmente è più sicuro impostarlo su false e utilizzare esplicitamente [],[]=

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